【问题标题】:why is flush() not executing data right away? php为什么 flush() 没有立即执行数据? php
【发布时间】:2016-05-03 21:15:53
【问题描述】:

我正在编写一个 PHP 脚本,但遇到了 flush() 函数。这是我的脚本:

<?php
    echo "1";
    flush();
    sleep(5);
    echo "2";
?>

我希望我的脚本发送“1”,然后等待 5 秒,然后发送“2”。但相反,脚本等待 5 秒,然后发送“12”。过去几个小时我一直在寻找答案,但找不到适合我的答案。

【问题讨论】:

  • 你真正想做什么?听起来你需要更多的客户端代码。就目前而言,使用服务器端方法不是最好的服务
  • 我猜你之前从来没有在 PHP 手册页上搜索过刷新

标签: php flush


【解决方案1】:

首先

flush() 可能无法覆盖 Web 服务器的缓冲方案,并且它对浏览器中的任何客户端缓冲都没有影响。

其次

它也不影响 PHP 的用户空间输出缓冲机制。这意味着如果您正在使用 ob_flush() 和 flush() 来刷新 ob 输出缓冲区,则必须调用它们。

http://php.net/manual/en/function.flush.php

至少,也尝试拨打ob_flush()

【讨论】:

    【解决方案2】:

    如果您将它与某种网络服务器一起使用,您还需要使用ob_flush()。并且ob_flush 必须始终位于flush() 之前。

    所以你的代码是:

    <?php
        echo "1";
        ob_flush();
        flush();
        sleep(5);
        echo "2";
    ?>
    

    【讨论】:

      猜你喜欢
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 1970-01-01
      • 2013-11-14
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多