現在我想實現一種效果,每隔1秒輸出一個數字。(因爲PHP一般是等完全運行完之後,再一下輸出的)。
- for ($i=10; $i>0; $i--)
- {
- echo $i.'<br />';
- ob_flush();
- flush();
- sleep(1);
- }
- ob_end_flush();
上面這段代碼,可以在FF下,每隔一秒輸出一個數字:
10
隔1秒
9
隔1秒
8
... ...
... ...
但是在IE下面,還是一下子全部輸出來。
原來是:
一些Web服務器或瀏覽器的output_buffering默認是4069字符或者更大,即輸出內容必須達到4069字符服務器纔會flush刷新輸出緩衝,爲了確保flush有效,最好在ob_flush()函數前有以下語句:
print str_repeat(" ", 4096);
也就是:
- <?php
- print str_repeat(" ", 4096);
- for ($i=10; $i>0; $i--)
- {
- echo $i.'<br />';
- ob_flush();
- flush();
- sleep(1);
- }
- ob_end_flush();
這下在IE下也可以實現一個一個動態輸出了