2011-10-12 81 views
1

我有以下代碼:睡眠和沖洗在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(); 
} 
?> 

我的問題是間隔的,而不是獲取時間()呼應了我得到的總延遲等於loopCount * loopSleep,然後一切立即回聲。我已經看到有關這類事情的其他帖子,並使用flush()似乎爲大多數人修復它 - 但不是我。

任何幫助表示讚賞

+1

'flush()'和'ob_flush()'是不同的東西。 – Spudley

+0

您使用的是什麼瀏覽器? –

+0

嗨 - 已嘗試刷新和ob_flush沒有效果 - 瀏覽器是Firefox 6 –

回答

2

試試這個:

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

感謝您的答案 - 遺憾的是仍然沒有好 - 當我給它的參數如下:http:// localhost /?is = 0&lc = 2&ls = 3 - I得到6秒的延遲,然後一次寫出2次。 –

0

你的Web服務器可以在它自己的緩存,如果它認爲它會得到更有效的這種方式轉移。也許你可以關閉它,但它可能不是最有效的生產。

+0

謝謝 - 我使用WAMP,因此將調查設置 –