[Résolu] ob_start() et ob_end_flush()

ob_start() et ob_end_flush() [Résolu] - PHP - Programmation

Marsh Posté le 15-06-2008 à 21:17:56    

Bonjour,
Voici mon code :
 

Code :
  1. <?php
  2. for ($i = 0; $i <= 10 ; $i++) {
  3. $raw = file_get_contents($url);
  4. if ($var == 1) {
  5. echo 'ok';
  6. } else {
  7. echo 'not ok';
  8. }
  9. }
  10. echo 'invisible text ?';
  11. ?>


- 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 ?
 
 :whistle:


Message édité par hahahafr le 16-06-2008 à 14:26:32
Reply

Marsh Posté le 15-06-2008 à 21:17:56   

Reply

Marsh Posté le 15-06-2008 à 21:50:46    

un simple flush() apres le echo devrai suffire  
 
oublie les ob_***


---------------

Reply

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" ).
 
 :sweat:


Message édité par hahahafr le 16-06-2008 à 00:30:57
Reply

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...:??:


---------------
Can't buy what I want because it's free -
Reply

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.
 
 :)


Message édité par hahahafr le 16-06-2008 à 14:24:57
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed