Afficher une page morceau par morceau - PHP - Programmation
Marsh Posté le 03-06-2005 à 15:51:20
GaSPaRD77 a écrit : peut être en fesant un ob_flush() avant ton sleep ... |
J'ai testé, mais ça ne fonctionne pas.
Dites moi si je me trompe, mais j'ai l'impression que la gestion du buffer par ob_start(), ob_flush() etc ne permet pas de forcer l'envoi de la page vers le client, uniquement de le retenir ou le modifier.
Marsh Posté le 03-06-2005 à 15:53:16
ob_start();
blablabla
$page = ob_get_contents();
ob_end_flush();
echo $page; // blablabla
ptet ca t'aidera
Marsh Posté le 03-06-2005 à 16:03:03
benamoubeach a écrit : ob_start(); |
Merci pour ton aide, mais ça ne libère pas l'envoi de la page au client. Le ob_end_flush() laisse la page côté serveur jusqu'à la fin de l'execution du script. Je suppose que c'est uniquement quand les pages sont volumineuses qu'un envoit se fait avant la fin du chargement de la page.
Voila ce que j'ai testé :
Code :
|
Existerait-il une fonction php ou un header qui définit la taille de découpage de la page entre deux transmissions de données ?
Marsh Posté le 03-06-2005 à 16:05:23
sinon tu peux le faire en javascript avec un setTimeout. Sinon je ne pense pas que tu puisses
Marsh Posté le 03-06-2005 à 16:08:09
benamoubeach a écrit : sinon tu peux le faire en javascript avec un setTimeout. Sinon je ne pense pas que tu puisses |
Le temps entre deux affichages dépend de la vitesse du traitement du fichier par le serveur, donc le javascript ça serait un peu de l'arnaque
Marsh Posté le 03-06-2005 à 16:09:06
non , car le settimeout commence a partir du moment ou la page a été totalement chargée
un mec qui a bossé 2 ans en javascript me l'a dit donc j'ai confiance
Marsh Posté le 03-06-2005 à 16:16:48
benamoubeach a écrit : non , car le settimeout commence a partir du moment ou la page a été totalement chargée |
Oui et il a raison Sauf que je souhaite agir sur le chargement de la page. Le sleep(1) que je donne dans mon exemple sera remplacé par un temps qu'on ne connaît pas à l'avance, et que javascript ne pourra pas connaître à l'avance.
Marsh Posté le 03-06-2005 à 16:30:05
ah pardon j'avais pas bien compris ce que tu voulais faire
Marsh Posté le 09-06-2005 à 17:42:59
J'ai toujours besoin d'une solution, je prends toutes vos idées
Marsh Posté le 13-06-2005 à 15:20:06
nulloz a écrit : flush() tout court non ? |
Merci beaucoup Nullzod, je comprends pas comment j'ai pu passer à côté de cette fonction dans la documentation php
Ca marche presque à la perfection, voici la page pour mon exemple :
Code :
|
Je vais tout de suite me mettre au boulot
Marsh Posté le 10-07-2005 à 18:45:10
j'ai essayé le code de lukos sur mon serveur local et chez moi ca marche pas ? les lignes 'blablabla' s'affiche toute en meme tant!
Ma config: serveur apache2, php 4.3, mysql 4.0. j'ai essayé avec firefox 1.0.2 et konqueror et rien? Je doit peut-être activer quelque chose mais où?
Marsh Posté le 03-06-2005 à 15:13:51
Bonjour
Je cherche une astuce qui me permettrait d'afficher une page PHP au fur et à mesure que le script s'execute côté serveur. Mon script traite des fichiers et peut durer une trentaine de secondes. Je veux que l'utilisateur puisse lire quelque chose comme :
Fichier 1 traité
Fichier 2 traité
... Une ligne s'ajoutant à chaque fois.
J'ai cherché du côté de la gestion du buffer mais rien ne permet de forcer l'envoi d'une partie de la page.
Disons que je travaille sur le script suivant :
Voila si vous voyez une solution