PHP montrant la sortie de foreach à l'écran, pour chaque élément
Question
Une chose que j'ai remarquée avec php, c'est que rien n'est affiché à l'écran tant que le script n'a pas cessé de fonctionner. Pour le projet sur lequel je travaille, je nourris une liste de plus de 100 éléments, qui effectue une requête HTTP pour chaque élément et, une fois terminé, affiche une page avec le statut de chaque élément, son succès, etc.
.Ce que je veux savoir, c'est s'il existe un moyen de générer les résultats de chaque boucle "foreach" au fur et à mesure qu'ils se produisent. Ainsi, l'utilisateur qui regarde l'écran voit la magie se dérouler ligne par ligne ou après 5 lignes.
Je n’ai jamais vu cela se faire avec des requêtes de type Ajax, c’est ce que je devrais chercher à faire à la place peut-être? Quelqu'un peut-il m'indiquer une fonction php qui le fait ou n'est-ce pas possible?
La solution
Il peut être préférable de stocker toutes les sorties de script dans un tampon, puis de vider le tampon si nécessaire.
Par exemple:
<?php
if (ob_get_level() == 0) ob_start();
$test = Array('one','two','three','four');
foreach ($test as $key=>$val)
{
echo $test;
ob_flush();
flush();
}
ob_end_flush();
?>
Assurez-vous que mod_gzip est désactivé!
Autres conseils
flush ()
devrait le faire, ou vous pouvez regarder toutes les fonctions de mise en mémoire tampon de sortie
Utilisez la flush ()
commande
j'utilise
flush(); @ob_flush();
après la sortie.