2012-06-08 58 views
0

例如,我有這樣的事情:如何在無限while循環中回顯某些內容?

<?php 
    header("Content-Type: text/html; charset=UTF-8"); 
    set_time_limit(0); 
    ob_start("ob_gzhandler"); 

    while(true) : 
    echo microtime(true)."<br>"; 
    ob_flush(); 
    flush(); 
    sleep(1); 
    endwhile; 

    ob_end_clean(); 
?> 

此代碼的工作對我localhost每個第二頁上打印microtime(),但是當我嘗試印在我的Shared Linux Hosting沒有運行相同的腳本,頁面只有無限的加載時間。

如何在無限循環中打印東西,在我的託管?

也許我必須啓用/禁用我的php.ini文件中的某些內容?有任何想法嗎?

回答

2

這是Gzip等待所有的數據,所以它可以壓縮和發送它。

因爲你在共享主機上,所以完全禁用它可能有點棘手。 因此,我們可以:

禁用它在Linux主機通過使用PHP

ini_set('output_buffering','on'); 
ini_set('zlib.output_compression', 0) 

禁用它使用的.htaccess

SetEnv no-gzip dont-vary 



編輯: 你也可以在你的Linux主機上試試這個嗎?

<?php 
ini_set('output_buffering','on'); 
ini_set('zlib.output_compression', 0); 
ob_implicit_flush(); 
for($i=0;$i<100;$i++) { 
     echo $i; 
     echo str_repeat(" ", 500); 
     ob_flush(); 
     flush(); 
     sleep(1); 
} 
?> 

這一個在我的主機上工作,它會很有趣,看看它是否適用於你的。

+0

我編輯並檢查了我的php5.ini文件,並將該行添加到.htaccess,但它仍然不顯示任何東西 – John

+0

看看我的編輯,我發佈了一段代碼,我剛剛在我的主機上測試過。 –

+0

僅在加載頁面後顯示結果。 – John