我需要修复此问题。
这只是我的代码的一部分
<?php
$number = 30;
while($number > 0) {
$number--;
sleep(30);
print "$number . Posted<br>";
}
?>
循环中的循环过程实际上要大得多,我只是把重要的东西。
无论如何,你可以看到它应该打印
30发布
(等待30秒)
29发表了
(等待30秒)
28发表了
(等待30秒)
但是它会等到循环结束,然后立即打印出来。有没有解决这个问题?我在想一个ajax方法,但我不知道任何方法。
答案 0 :(得分:15)
很高兴每个人都解释了原因。
这是因为默认情况下,PHP会在将任何内容“刷新”到浏览器之前处理所有内容。只需打印每一行,它就会将这些信息存储在缓冲区中,这些信息将在PHP完成执行后同时打印出来。
如果您希望PHP在该行之后立即将该内容刷新到浏览器,则需要在每行之后调用flush()
,然后在每个文本被调用后一次输出一行文本。< / p>
答案 1 :(得分:4)
打印后致电flush()
。
答案 2 :(得分:2)
您需要使用flush()
答案 3 :(得分:1)
具有flush()的循环的示例是
<?php
ob_start();
for ($i = 0; $i < 10; $i++)
{
echo "<div>" . time() . ": Iteration $i</div>";
sleep(1);
ob_flush();
flush();
}
ob_end_flush();
?>
你不应该经常刷新,因为你强迫php处理消息,这会增加执行时间。
答案 4 :(得分:0)
您可以将\n
放入echo
或print
以刷新缓冲区。