作者kencool107 (臉都歪了)
看板PHP
標題[請益] flush的問題
時間Thu Mar 21 11:46:38 2013
以下是我的原始碼
<?php
ob_start();
for($i=0;$i<70;$i++)
{
echo 'printing...<br />';
ob_flush();
flush();
usleep(300000);
}
?>
照網路上查的資料
這樣寫應該會一段時間印出printing直到結束
可是我在我本機執行的結果都是最後才一次印出來
請問一下是哪裡有問題
哪邊設定要改嗎??
感謝
///////找到問題了
我在
echo 'printing...<br />';
後新增
echo str_pad('',4096)."\n";
就可以了 可是為什麼會這樣呢
我在php.ini裡面設定檔是
output_buffering = 4096
跟這個有關係嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.110.133
※ 編輯: kencool107 來自: 60.248.110.133 (03/21 12:04)
1F:推 LPH66:好像是 IE 的問題...你用別的瀏覽器看原來的程式試試 03/21 13:14
都一樣耶
※ 編輯: kencool107 來自: 60.248.110.133 (03/21 14:24)
2F:→ gname:ie好像只要塞255個就夠了... 03/21 16:49
3F:推 lausai:ob_start()拿掉 改成ob_end_flush()關掉output buffering 03/21 20:21
4F:→ lausai:然後for迴圈裡的ob_flush也不需要了 這樣就會每次echo都直 03/21 20:23
5F:→ lausai:接輸出給browser 但browser也可能有自己的buffering機制 例 03/21 20:23
6F:→ lausai:如某些版本IE收到256 bytes前不會顯示頁面 所以在for迴圈外 03/21 20:24
7F:→ lausai:加上str_pad('',256)可以對付IE 其他browser就要請另外測試 03/21 20:26
8F:→ MOONRAKER:實在不該期待browser和tty行為一樣,這是馬和鹿的差別。 03/22 10:31
9F:→ hSATAC: 瀏覽器行為 firefox 和 chrome 就不一樣了 03/24 14:27
10F:→ hSATAC:真的要確保這種效果最好還是用 pulling 之類的方式 03/24 14:27