测试代码如下:
<?php
for($i=0;$i<5;$i++){
echo '<br/>abc___'.$i;
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
?>
理论上应该是1秒出来一条是吧?但是我测试的结果是5秒之后才一起出来。
网上查了下有这样说的“个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。 ”我这个是64位的windows的本地xampp的集成环境。
------解决方案--------------------
我又回来了,试试
<?php
echo str_pad('',4096);
set_time_limit(50);
for($i=0;$i<=5;$i++){
echo $i.'<br />';
ob_flush();
flush();
sleep(1);
}
?>
这两天出这个问题的还挺多的。
这个写法在各浏览器测试都没问题,但有童鞋说,这种做法往缓存区写垃圾,可以试试PHP抛出异常,有空研究一下再分享。