似乎尽管我已经做了一切努力让它发挥作用,它只是不起作用。
以下是我所做的一切:
以下是我试图开始工作的代码(基本上每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设置吗?请帮忙。
编辑:在此SO问题中使用OP的示例,它有效:PHP buffer why \r\n
我看到我必须执行str_repeat()来生成一个溢出缓冲区的字符串。为什么在php手册中没有提到这个?这真的是程序吗?
答案 0 :(得分:1)
PHP会向请求返回一个响应。如果您在该代码中进行sleep()
次呼叫,则整个响应将等待这些呼叫。即使您在print
之间进行了一秒钟的休眠,PHP也不会以块的形式将响应传递回浏览器。
如果您使用PHP作为交互式控制台,那么这可能会像您预期的那样工作和行为。
答案 1 :(得分:0)
阅读http://www.php.net/flush说明,它可以帮助您了解会发生什么。