2013-09-30 182 views
2

我一直在試圖讓我的服務器能夠在睡眠後刷新回顯或打印並且不成功。我在Windows下使用PHP 5.3.24。這裏有幾十個和幾十個建議,幾乎所有我嘗試過的,都沒有成功。下面是一些代碼,我認爲可能的工作:php implicit_flush命令不能正常工作

ob_implicit_flush(true); 
ob_end_flush(); 
for ($i=0; $i<10; $i++) { 
    echo $i.'<br>'; 
    sleep(1); 
} 

此代碼不會9秒,然後輸出都做任何事情。

我曾嘗試:

在頁面的頂部-outputting超過1000字,因爲有一個建議,就是我的瀏覽器緩存是,

- 新增標題(「內容類型:文本/ html; charset = utf-8');頭(「Cache-Control:no-cache,must-revalidate」);頭(「Pragma:no-cache」);

-used flush();和ob_flush();命令,

訂做output_buffering =關,要用zlib.output_compression =關,和implicit_flush =是(或implicit_flush =開,看到這兩個例子)在php.ini,

- 也試圖@ini_set('的zlib .output_compression」,0); @ini_set( 'implicit_flush',1); @ob_end_clean();參數或者set_time_limit(0);

加上其他人,我可能會忘記。

有什麼我失蹤?謝謝。

+0

我應該提到之前,我已經在Windows Server 2008 R2中運行IIS 7。 – srs

回答

1

看起來像瀏覽器緩存。試試這個(測試成功):

ob_implicit_flush(true); 
ob_end_flush(); 
for ($i=0; $i<10; $i++) { 
    echo $i.'<br>'; 
    echo str_repeat(' ', 1024); 
    sleep(1); 
} 

不罰款的解決方案,但它證明了你簡單得把更多的字符到瀏覽器緩存。

+0

感謝您的回覆,但不幸的是,這沒有奏效。我曾嘗試在循環之前和(根據您的代碼)填充字符,但它仍然無效。 – srs

+0

您是否試圖手動執行原始的http請求?在linux中,echo -e「GET /script.php HTTP/1.0 \ r \ n主機:mydomain.com \ r \ n \ r \ n」| nc mydomain.com 80'會這樣做。只是爲了查看它是否緩存在瀏覽器的網絡服務器中。在我的配置(Apache和Firefox)中,您的代碼在Firefox中緩存並且工作。上面的命令應該顯示,如果它的瀏覽器或IIS相關的問題 – a4c8b

+0

謝謝。我從Windows命令行運行它,它的工作方式應該如何,即使我從代碼中刪除flush命令。這將php安裝從等式中移除,但它仍然可能是IIS問題或瀏覽器問題。但是謝謝你,這比我以前得到的還要多。 – srs