2009-12-17 40 views
0

我有一個無限循環,我想睡一會兒,但瀏覽器只是掛起,沒有任何回聲。有人能告訴我爲什麼嗎?這個循環不會迴應我的字符串

while(1) 
{ 
    sleep(1); 
    echo 'test'.'<br>'; 
} 
+0

如果你想在網站上顯示計時器您可以使用JavaScript :)這樣永遠也不會工作。 – Kamilos 2009-12-17 12:41:18

回答

1

這是因爲PHP將數據發送到大塊的瀏覽器。這完全是關於優化,發送小數據對性能不利,你希望它被髮送到足夠大的塊,因此傳輸它的開銷(速度和實際流量)都會相對較低。幾條小絃線不夠大。嘗試在echo之後加上flush(),它會強制PHP將此字符串發送給瀏覽器。

+0

嗨瓦瓦。謝謝。我嘗試過,但閃光似乎不是一個PHP函數。 :) – john 2009-12-17 12:36:28

+1

你的意思是沖水? – john 2009-12-17 12:37:12

+1

obflush()。謝謝。 – john 2009-12-17 12:40:50

2

直到服務器停止處理,它纔會工作。

+0

謝謝CK。有沒有辦法實現一個無限循環,睡幾秒鐘,還是需要做別的事情?有什麼建議麼? – john 2009-12-17 12:33:51

+0

如果你想在幾秒鐘後結束,它真的是無限的嗎? – GalacticCowboy 2009-12-17 12:40:31

2

您可以嘗試使用flush()來刷新輸出緩衝區,但它是not guaranteed to work

PHP.net試試這個功能:

function flush_buffers() { 
    ob_end_flush(); 
    ob_flush(); 
    flush(); 
    ob_start(); 
} 
+0

嘿Skilldrick,不..我嘗試沖洗,但仍然掛起。有什麼建議麼? – john 2009-12-17 12:38:01

+0

我認爲你必須打破循環。爲什麼它需要是無限的? PHP腳本並不意味着長時間運行。 – Skilldrick 2009-12-17 12:39:57

+0

如果您想不斷更新包含更多數據的頁面,則可能需要使用JavaScript。 – Skilldrick 2009-12-17 12:40:36

0

:原因這是一個無限循環它永遠不會發送響應或破損。