flush()函数无效?不能实时刷新输出,怎么解决呢
时间:2021-07-01 10:21:17
帮助过:8人阅读
flush()函数无效?不能实时刷新输出,如何解决呢?
本帖最后由 zhoumengkang 于 2013-05-28 13:46:14 编辑
测试代码如下:
for($i=0;$i<5;$i++){
echo '
abc___'.$i;
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
?>
理论上应该是1秒出来一条是吧?但是我测试的结果是5秒之后才一起出来。
网上查了下有这样说的“个别web服务器程序,特别是Win32下的web服务器程序,在发送结果到浏览器之前,仍然会缓存脚本的输出,直到程序结束为止。 ”我这个是64位的windows的本地xampp的集成环境。
分享到:
------解决方案--------------------我又回来了,试试
echo str_pad('',4096);
set_time_limit(50);
for($i=0;$i<=5;$i++){
echo $i.'
';
ob_flush();
flush();
sleep(1);
}
?>
这两天出这个问题的还挺多的。
这个写法在各浏览器测试都没问题,但有童鞋说,这种做法往缓存区写垃圾,可以试试PHP抛出异常,有空研究一下再分享
。