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