ob_start() et ob_end_flush() [Résolu] - PHP - Programmation
Marsh Posté le 15-06-2008 à 21:50:46
un simple flush() apres le echo devrai suffire
oublie les ob_***
Marsh Posté le 16-06-2008 à 00:30:39
Non, toujours pas.
C'est bizarre parce que sur ce site : http://iubito.developpez.com/php/bench.php qui affiche aussi ligne par ligne, ils utilisent flush() aprés un echo et ça marche trés bien (cf. lien "Voir la source de cette page" ).
Marsh Posté le 16-06-2008 à 10:32:34
Il peut y avoir une mise en cache au niveau du serveur http et/ou du navigateur...mais en général flush+ob_end_flush suffisent...
Marsh Posté le 16-06-2008 à 14:24:43
Pour ceux que ça intéressent, j'ai finalement réussi. Il semblerait que apache 2 + php 5 sous windows posent des soucis. Pour résoudre ça il suffit de faire un ob_flush(); suivi d'un flush(); et là, ça marche.
Marsh Posté le 15-06-2008 à 21:17:56
Bonjour,
Voici mon code :
- D'aprés ce que j'ai compris en lisant la documentation de php ob_start() et ob_end_flush() sont complémentaires. ob_start() est destiné a stopper l'envoi des donnée vers le navigateur et commencé une "mise en cache". ob_end_flush() est la pour stopper cette "mise en cache" et envoyer les données déjà en cache vers le navigateur tout en arrêtant le script. J'ai bon ?
- Ce que j'essaie de faire avec mon petit script c'est afficher les lignes de ma boucle à la suite, une à une, et non-pas en une seule fois lorsque la page arrive sur le navigateur. Je ne parle pas la de l'AJAX, regarder ce site sans javascript : http://just-ping.com/index.php?vh=66.94.234.13
Il réalise un affichage des lignes une à une, et non pas en un seul gros bloc, comme c'est la cas pour mon script.
D'où mon essai avec les fonctions ob_start() et ob_end_flush().
Je ne comprends cependant pas pourquoi ma page s'affiche toujours en un seul coup. J'ai mal utilisé ces fonctions ? Ou alors elles sont incompatibles avec les boucles ? Quelqu'un aurai une petite idée ?
Message édité par hahahafr le 16-06-2008 à 14:26:32