2009-07-29 7 views
3

Une chose que j'ai remarquée avec php, c'est que rien n'est sorti à l'écran tant que le script n'a pas cessé de fonctionner. Pour le projet sur lequel je travaille, je crée une liste de plus de 100 éléments et une requête HTTP pour chaque élément et une fois terminée, affiche une page avec le statut de chaque élément, échec de réussite, etc.PHP montrant la sortie de foreach à l'écran, pour chaque élément

Ce que je veux savoir s'il existe un moyen d'afficher 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 produire une ligne à la fois ou après 5 lignes.

Je l'ai seulement vu avec des requêtes de type Ajax, est-ce que c'est ce que je devrais plutôt faire? Quelqu'un peut-il me signaler une fonction PHP qui fait cela ou n'est-ce pas possible?

Répondre

6

Il peut être préférable de stocker toutes les sorties de script dans un tampon puis vider le tampon en cas de besoin.

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 vous avez mod_gzip désactivé!

1

J'utilise

flush(); @ob_flush(); 

après la sortie.