看板 PHP 關於我們 聯絡資訊
以下是我的原始碼 <?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)
LPH66:好像是 IE 的問題...你用別的瀏覽器看原來的程式試試 03/21 13:14
都一樣耶 ※ 編輯: kencool107 來自: 60.248.110.133 (03/21 14:24)
gname:ie好像只要塞255個就夠了... 03/21 16:49
lausai:ob_start()拿掉 改成ob_end_flush()關掉output buffering 03/21 20:21
lausai:然後for迴圈裡的ob_flush也不需要了 這樣就會每次echo都直 03/21 20:23
lausai:接輸出給browser 但browser也可能有自己的buffering機制 例 03/21 20:23
lausai:如某些版本IE收到256 bytes前不會顯示頁面 所以在for迴圈外 03/21 20:24
lausai:加上str_pad('',256)可以對付IE 其他browser就要請另外測試 03/21 20:26
MOONRAKER:實在不該期待browser和tty行為一樣,這是馬和鹿的差別。 03/22 10:31
hSATAC: 瀏覽器行為 firefox 和 chrome 就不一樣了 03/24 14:27
hSATAC:真的要確保這種效果最好還是用 pulling 之類的方式 03/24 14:27