如何为以下循环的每次迭代回显某些内容:
<?
for($i=0;$i<5;$i++) {
// some (slow) logic
echo $i;
}
?>
我想在它运行时查看输出的值,但是在执行脚本之后$i
什么都不输出。0 1 2 3 4
如何为以下循环的每次迭代回显某些内容:
<?
for($i=0;$i<5;$i++) {
// some (slow) logic
echo $i;
}
?>
我想在它运行时查看输出的值,但是在执行脚本之后$i
什么都不输出。0 1 2 3 4
试试这个。这里的关键是知道为您的服务器设置的 output_buffering 值(默认值 = 4096)。
ob_start();
$buffer = str_repeat(" ", 4096)."\r\n<span></span>\r\n";
for ($i=0; $i<25; $i++) {
echo $buffer.$i;
ob_flush();
flush();
sleep(1);
}
ob_end_flush();
所以构建一个字符串,然后回显该字符串:
$str = '';
for($i = 0; $i < 5; $i++) {
$str .= $i;
}
echo $str;
请注意,在实践中,这不会改变任何事情。这样一个微小的循环将几乎立即执行并几乎立即显示。如果您在浏览器上下文中执行此操作,您可能会在单个网络数据包中获得所有数字,并且浏览器也会立即渲染/显示它们。