首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >调用ob_flush()和flush(),但浏览器直到脚本结束才显示任何输出

调用ob_flush()和flush(),但浏览器直到脚本结束才显示任何输出
EN

Stack Overflow用户
提问于 2011-04-24 21:59:20
回答 9查看 22.4K关注 0票数 20

您好,请查看以下代码:

代码语言:javascript
复制
<?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";
?>

这是不正确的?我测试过了,但我的输出显示当脚本完成时,有什么解决方案吗?

EN

回答 9

Stack Overflow用户

发布于 2012-05-25 02:14:07

使用Chrome时,我发现需要更多的字节才能绕过浏览器的缓冲区。在我的例子中,4096字节就可以了:

代码语言:javascript
复制
echo str_repeat(' ', 4096);

此外,在开头添加一些HTML元素似乎也是强制性的:

代码语言:javascript
复制
echo $content . '<br />';
票数 2
EN

Stack Overflow用户

发布于 2011-06-16 22:52:22

在我的系统上,FF4似乎需要超过256个字节来开始呈现来自服务器端的内容,然后我在一开始就解决了这个问题:

代码语言:javascript
复制
while (@ob_end_flush());
echo(str_repeat(' ',1024));
// ...etc...
票数 1
EN

Stack Overflow用户

发布于 2015-02-05 21:10:56

我发现这是因为在我的例子中使用了Apache的gzip压缩。

为了只对'flushing‘脚本关闭gzip,我在连续输出脚本所在的目录中创建了一个新的.htaccess文件,其中包含以下内容:

代码语言:javascript
复制
<IfModule mod_env.c>
    SetEnv no-gzip 1
</IfModule>

Flushing再次按预期工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5770917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档