您好,请查看以下代码:
<?php
ob_start();
echo "Start ...<br />\n";
for( $i = 0 ; $i < 10 ; $i++ )
{
echo "$i<br />\n";
ob_flush();
flush();
sleep(1);
}
echo "End ...<br />\n";
?>
这是不正确的?我测试过了,但我的输出显示当脚本完成时,有什么解决方案吗?
发布于 2012-05-25 02:14:07
使用Chrome时,我发现需要更多的字节才能绕过浏览器的缓冲区。在我的例子中,4096字节就可以了:
echo str_repeat(' ', 4096);
此外,在开头添加一些HTML元素似乎也是强制性的:
echo $content . '<br />';
发布于 2011-06-16 22:52:22
在我的系统上,FF4似乎需要超过256个字节来开始呈现来自服务器端的内容,然后我在一开始就解决了这个问题:
while (@ob_end_flush());
echo(str_repeat(' ',1024));
// ...etc...
发布于 2015-02-05 21:10:56
我发现这是因为在我的例子中使用了Apache的gzip压缩。
为了只对'flushing‘脚本关闭gzip,我在连续输出脚本所在的目录中创建了一个新的.htaccess
文件,其中包含以下内容:
<IfModule mod_env.c>
SetEnv no-gzip 1
</IfModule>
Flushing再次按预期工作。
https://stackoverflow.com/questions/5770917
复制相似问题