XAMPP上的PHP输出缓冲


PHP output buffering on XAMPP

尽管我尽了一切努力让它发挥作用,但它似乎还是不起作用。

以下是我所做的:

  1. 输出缓冲=4096
  2. zlib.output_compression=关闭
  3. 尝试使用ob_implicit_flush()
  4. 尝试使用ob_flush()
  5. 将ini设置中的缓冲区大小output_braining减小到1

下面是我试图开始工作的代码(基本上每1秒输出一行),但我会在15秒后得到整个输出。

使用ob_implicit_flush()

<?php
ob_implicit_flush();
for($i=0;$i<=15;$i++)
{
    print($i."<BR />");
    sleep(1);
}

使用ob_start()ob_flush()法:

<?php
ob_start();
for($i=0;$i<=15;$i++)
{
    print($i."<BR />");
    ob_flush();
}

我还缺少其他PHP设置吗?请帮忙。

编辑:使用OP在这个SO问题中的例子,它是有效的:PHP缓冲区为什么''r''n

我发现我必须执行str_repeat()来生成一个字符串以使缓冲区溢出。为什么php手册中没有提到这些?这真的是程序吗?

PHP对一个请求返回一个响应。如果在该代码中有sleep()调用,那么整个响应将等待这些调用。即使你在print之间睡了一秒钟,PHP也不会把响应块传回浏览器。

如果您使用PHP作为交互式控制台,那么它应该可以像您预期的那样工作和行为。

阅读http://www.php.net/flush描述,它可以帮助你了解发生了什么。