2011-10-12 3 views
1

Je le code suivant:sommeil et rinçage dans la boucle php

<?php 
$initialSleep = (isset($_GET['is'])) ? $_GET['is'] : 0; // seconds - default 0 if not specified 
$loopCount = (isset($_GET['lc'])) ? $_GET['lc'] : 1; // default 1 if not specified 
$loopSleep = (isset($_GET['ls'])) ? $_GET['ls'] : 1; // seconds - default 0 if not specified 

sleep($initialSleep); 

for ($i = 0; $i < $loopCount; $i++) { 
    sleep($loopSleep); 
    echo time(); 
    ob_flush(); 
} 
?> 

Mon problème est le lieu d'obtenir le temps() en écho à des intervalles que je reçois un retard total égal à loopCount * loopSleep puis tout écho à la fois. J'ai vu d'autres articles sur ce genre de choses et l'utilisation de flush() semble le résoudre pour la plupart des gens - pas moi cependant.

Toute aide appréciée

+1

'flush()' et 'ob_flush()' sont des choses différentes. – Spudley

+0

Quel navigateur est en cours d'utilisation? –

+0

Salut - ont essayé flush et ob_flush à aucun effet - le navigateur est firefox 6 –

Répondre

2

Essayez ceci:

ob_start(); 
for ($i = 0; $i < $loopCount; $i++) { 
    sleep($loopSleep); 
    echo time(); 
    ob_flush(); 
    flush(); 
} 
+0

Merci pour la réponse - malheureusement toujours pas bon - quand je lui donne les paramètres comme suit: http: // localhost /? Is = 0 & lc = 2 & ls = 3 - I obtenir un délai de 6 secondes, puis 2 fois écrit à la fois. –

0

Votre serveur web peut tamponner sur son propre si elle pense qu'il obtiendra une plus efficace le transfert de cette façon. Peut-être que vous pouvez l'éteindre, mais ce n'est probablement pas le plus efficace en production.

+0

merci - j'utilise WAMP donc va étudier les paramètres –