作者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