2012-05-03 64 views
0

當我在while循環中處理大型記錄時,每次迭代都會輸出一些屏幕信息時,我總是發現自己正在看一箇舊屏幕。我看到的只是活動圖標旋轉 - 表示服務器正在處理一些數據。在客戶端瀏覽器中輸出速度更快

我沒有遇到超時問題,因爲我已經在腳本的頂部獲得了set_time_limit (3600);。這只是無聊的屏幕,讓我擔心。

在ASP(我來自哪裏),我去了response.flush,並負責處理這個問題。 順便說一句,在ASP中,我總是把緩衝與response.buffer = true。在PHP中,這是一個非常有爭議的領域,我仍然不清楚ob是否應該打開或關閉。

在這裏,我沒有打開ob_start緩衝,問題是爲什麼不是echo將內容推送到瀏覽器?

如何讓瀏覽器逐漸獲取html塊作爲服務器處理信息中的while循環?

+0

爲什麼不在ob_start中,然後在循環中定期調用[ob_flush](http://php.net/manual/en/function.ob-flush.php) – Anigel

+0

就是這麼做的。不是凹痕。 –

回答

0

禁用輸出緩衝,減少php.ini中的緩衝區大小,使用隱式刷新或使用flush()明確刷新。但是,如果您必須顯示大量數據,那麼在處理花費太多時間時,對您的內容進行分頁或使用命令行腳本可能更好。

+0

至於「減少你的php.ini中的緩衝區大小」,我寧可不碰php.ini。這可以在頁面級完成嗎? –

+0

幾乎php.ini中的任何值都可以通過ini_set函數在當前腳本中修改。 – StackOverflowed

相關問題