Anticiper l'affichage Echo en php

Résolu/Fermé
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 - Modifié le 2 avril 2023 à 17:32
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 - 3 avril 2023 à 12:14

Bonjour,

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

A voir également:

4 réponses

yg_be Messages postés 22833 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 mai 2024 1 471
2 avril 2023 à 18:06

bonjour,

C'est probablement le navigateur qui attend avant d'afficher les résultats.

0
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 8
2 avril 2023 à 18:35

Ben oui, c'est ma question : comment forcer l'affichage ?

0
jordane45 Messages postés 38196 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 30 mai 2024 4 675
2 avril 2023 à 19:33

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


0
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 8
3 avril 2023 à 09:30

Ton exemple donne "This output is buffered. As is this. 0 1 2 3 4 5 6 7 8 9" qui s'affiche d'un coup après 10 secondes.

J'utilise habituelles Chrome; j'ai essayé avec Firefox et Edge : idem.

Voici php.ini

<?php
date.timezone = "Europe/Brussels"
file_uploads = On
?>
0
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 8 > Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024
3 avril 2023 à 11:19

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

0
yg_be Messages postés 22833 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 30 mai 2024 1 471 > Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024
3 avril 2023 à 11:44

Le problème vient du serveur: le serveur n'envoie rien pendant 10 secondes, puis tout en une fois.

0
Herve_be Messages postés 1025 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 27 mai 2024 8
3 avril 2023 à 12:14

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.

0