【问题标题】:understanding flush,Ob_flush and buffer_output in PHP理解 PHP 中的 flush、Ob_flush 和 buffer_output
【发布时间】:2011-10-25 08:14:32
【问题描述】:

我正在阅读有关内容缓冲的内容,我发现了一个简单的脚本来显示刷新的效果

<?php

if (ob_get_level() == 0) ob_start();

for ($i = 0; $i < 10; $i++) {

    echo "<br> Line to show.";
    echo str_pad('', 4096) . "\n";

    ob_flush();
    flush();
    sleep(2);
}

echo "Done.";

ob_end_flush();

?>

此脚本工作正常并显示输出,但是当我删除 str_pad 或将长度从 4096 减少到 40 时,刷新不起作用。

谁能帮我看看到底是什么原因造成的。

【问题讨论】:

    标签: php apache2 output-buffering


    【解决方案1】:

    最后我找到了原因。

    根据PHP.net 浏览器需要某些字节才能开始显示页面。像某些版本的 Internet Explorer 需要 200 字节。 Firefox 或 Chrome 等现代浏览器需要更多字节才能启动浏览器显示。

    在上述情况下,如果您在 Internet Explorer 中检查它,则不需要字符串填充,但在 Firefox 或 Chrome 中,您需要在输入中添加空格以显示刷新的输出。

    【讨论】:

      【解决方案2】:

      我知道这个问题,我自己也遇到过。。您是否激活了输出压缩?

      【讨论】:

      • 谢谢有人已经在我潜水的地方游泳了。不,它在 php.ini 中设置为关闭
      猜你喜欢
      • 2011-05-27
      • 2011-05-10
      • 2015-08-07
      • 2012-01-24
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      相关资源
      最近更新 更多