Pourquoi la commande php actualiser ne fonctionne-t-elle pas dans Safari ?
P粉141925181
P粉141925181 2023-09-04 18:39:18
0
2
532

J'ai un script php qui prend beaucoup de temps, je voulais donc donner quelques commentaires aux utilisateurs. Simplifiez-le pour résoudre le problème principal. Le script fonctionne parfaitement dans Firefox (actualisant immédiatement la sortie), mais Safari attend que tout le contenu soit généré. Pourquoi? Comment puis-je résoudre ce problème?

n
n"; affleurer(); $je = 0 ; tandis que ($i < $j) { $i++; echo "Test".$i.str_pad('',$k)."
n"; affleurer(); dormir(1); } ?>≪/pré>

BTW : Chrome ne chargera pas du tout cette page, il me donnera ERR_CONTENT_DECODING_FAILED.

J'ai aussi essayé de mettre

 SetEnv sans gzip 1 

dans .htaccess mais pas de chance. J'ai également essayé SetEnv no-gzip dont-vary. Avez-vous des indices pour que Safari (et Chrome) fasse la même chose que Firefox ?

J'ai lu sur php.net à propos de flush(), ob_flush(), ob_start() ; ., et j'ai lu presque toutes les questions sur flush + tous les commentaires sur Stackoverflow au cours des 20 dernières années. J'ai essayé d'ajouter ini_set('output_buffering', 'On'); ou ini_set('output_buffering', 'Off');, en ajoutant ob_start(null,Chapitre 4096header('X-Content-Type-Options: nosniff'); et/ouheader('X-Accel-Buffering: no') ;< /code>. J'ai mis @ob_flush(); avant ou après flush(); et j'ai essayé str_pad< a été augmenté à 2 ^ 16 (65 536) mais cela n'a pas aidé. Malheureusement, je n'arrive pas à contrôler le serveur Apache (exécutant PHP 8.1 et FastCGI) chez mon fournisseur d'hébergement. Maintenant que cela fonctionne sur Firefox, je suppose que je dois faire quelque chose de bien.

P粉141925181
P粉141925181

répondre à tous (2)
P粉684720851

Grâce àhareth pyj'ai trouvé la réponse !

\n
\n"; $i = 0; while ($i < $j) { $i++; echo "Test ".$i.str_pad('',$k)."
\n"; ob_flush(); usleep(100000); } ?>

J'ai augmenté $j à 200 et réduit le temps de sommeil à 0,1 seconde. Safari répond un peu lentement, mais finit par afficher ligne par ligne. Tout comme Firefox et Chrome.

    P粉762447363

    Éditeur :
    ob_start("ob_gzhandler")Destiné à être utilisé comme fonction de rappel pour ob_start() pour aider à envoyer des données codées en gz aux navigateurs Web prenant en charge les pages Web compressées.Source

    \n
    \n"; $i = 0; while ($i < $j) { $i++; echo "Test ".$i.str_pad('',$k)."
    \n"; ob_flush(); sleep(1); } ?>

    Sortie (sur Chrome) :

      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!