Anticiper l'affichage Echo en php
RésoluBonjour,
J'ai un script php qui dure "un certain temps".
Il envoie ses résultats au fur et à mesure via Echo.
Je ne vois la page qu'une fois que tout est terminé.
Est-il possible de voir le résultat des Echo en temps réel ?
J'ai essayé d'ajouter ob_flush() dans la boucle mais ça ne change rien.
Rerci
4 réponses
-
Contributeur
bonjour,
C'est probablement le navigateur qui attend avant d'afficher les résultats.
-
Ben oui, c'est ma question : comment forcer l'affichage ?
-
Modérateur
Bonjour,
Tu dis avoir utilisé ob_flush
mais as tu mis un ob_start(); ? et un ob_implicit_flush() ?
par exemple
<?php ob_start(); // not needed if output_buffering is on in php.ini ob_implicit_flush(); // implicitly calls flush() after every ob_flush() echo "This output is buffered.\n"; echo "As is this.\n"; for ($i = 0; $i < 10; $i++) { echo "$i\n"; ob_flush(); sleep(1); } ?>Voir la doc : https://www.php.net/manual/fr/function.ob-implicit-flush.php
-
-
@Herve_be
Ton exemple sur mon serveur est ici https://www.rudyv.be/Aquarium/RVRT/TestFlush.php
Si tu veux bien l'essayer pour voir si le problème vient du navigateur ou du serveur
Merci
-
Contributeur@Herve_be
Le problème vient du serveur: le serveur n'envoie rien pendant 10 secondes, puis tout en une fois.
-
-
J'ai ajouté
echo str_repeat(' ',1024*64);ceci force le serveur à envoyer le buffer parce qu'il est plein.
ça fonctionne, problème résolu.