2009-04-14 6 views
1

Quelle est la meilleure approche pour configurer la sortie séquentielle pour un script d'installation PHP? Dites que j'ai une page, et que vous voulez afficher une sortie incrémentale dans un DIV fourni par un script PHP.PHP: Meilleure méthode pour la sortie séquentielle?

Alors page.html peut contenir ceci:

<div id="output"> 
    <!-- Script Output Here --> 
</div> 

Et install.php pourrait ressembler à ceci (à des fins de test):

<?php 
// Turn off Output Buffering 
ob_end_flush(); 

// Begin Test Output (5 second intervals) 
echo 'Testing incremental output...' . "\n"; 
sleep(5); 
echo 'Step 1...' . "\n"; 
sleep(5); 
echo 'Step 2...' . "\n"; 
sleep(5); 
echo 'Complete!' . "\n"; 

Je pensais AJAX pourrait être la meilleure approche, mais je Je ne sais pas comment aborder cela. Si je charge "install.php" via JavaScript, je ne récupèrerai rien tant que le script ne sera pas terminé (correct?) - rendant l'ensemble de cet objectif sans objet. J'ai vu cela déjà fait, mais je ne trouve pas d'exemple concret de la façon dont cela a été fait.

Toute aide appréciée!

Répondre

2

Je doute qu'Ajax fasse ce que vous voulez - vous devrez peut-être appeler les ajax plus fréquemment.

Pour rincer les informations dès qu'elles sont produites, vous avez besoin de flush() après la sortie des informations.

J'ai également ajouté dans un fichier .htaccess pertinent une ligne pour éviter toute mise en mémoire tampon due à GZipping la sortie aussi (apache2).

SetEnvIf Request_URI "/url/dont/buffer/me.php" gzip=0 

Dans le fichier PHP correspondant:

ini_set('output_buffering', false); 
ini_set('implicit_flush', 'true'); 

et les appels appropriés à flush(). Cela couvre à peu près toutes les bases.

-2

Je voudrais tout vers un fichier texte et la mise à jour de la DIV via AJAX en appelant simplement le fichier txt

+0

emberlificotées; plusieurs utilisateurs? Ensuite, vous avez plusieurs fichiers texte. Nommez le fichier texte basé sur une session? Qu'en est-il des multiples onglets? Oh merde je viens de diviser par zéro. – Anthony

+0

Ah, vissez-le. Il suffit de chronométrer votre script d'installation et de créer un GIF animé. C'est pareil pour l'utilisateur. – Calvin

Questions connexes