2014-12-28 66 views
0

自我解釋但沒有工作...PHP - 爲什麼flush(和/或ob_flush)不起作用?

只是想呼應附加$ J每1秒......

ob_implicit_flush(); 
ob_end_flush(); 
ob_start(); 

for ($j=0;$j<=9;$j++){ 
    echo $j.'<br>'; 
    flush(); 
    ob_flush(); 
    sleep(1); 
} 

任何想法?

+4

擺脫'@'。這隱藏了錯誤。如果你隱藏自己的錯誤,你如何期望知道什麼是錯的? –

+0

沒有錯誤@John :)有或沒有@ ... –

+0

清除瀏覽器的緩存 – hek2mgl

回答

3

PHP的緩衝區只是其中之一。

服務器可能會緩衝輸出,並且一些瀏覽器會緩衝輸入,因此它不會嘗試重新呈現接收到的每個字節的整個頁面。

一般來說,你應該在什麼從未使用sleep瀏覽器將調用,因爲這只是要求被拒絕服務攻擊,真是......

所以基本上這個答案告訴你「不要那樣做「。當然,還有更好的方法來做你正在做的事情,從JavaScript開始就很簡單:

<div id="counter"></div> 
<script type="text/javascript"> 
    (function() { 
     var count = 0, box = document.getElementById('counter'); 
     function step() { 
      box.appendChild(document.createTextNode(count)); 
      box.appendChild(document.createElement('br')); 
      count++; 
      if(count <= 9) setTimeout(step,1); 
     } 
     step(); 
    })(); 
</script> 
+0

我會說「從不使用'睡眠',期間」。 :P但這是另一次討論的話題。 – cHao

+0

@cHao當您在PHP中構建控制檯應用程序時,'sleep'非常有用。我製作了一個基於文本的連接4遊戲,並使用'usleep'來編排播放片段的動畫,這非常棒XD所以不是「從不」,只是「極少數,只有在你真正需要它時」:p –

+0

誰說他使用瀏覽器而不是cli? – Rob

相關問題