PHP实时输出出错
PHP Error while outputing in real time
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
ob_start();
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
flush();
ob_flush();
sleep(1);
}
为什么这些代码不是每秒输出$i?
10秒后输出
在我看来,当从终端 运行 时,您的代码确实每 1 秒稳定输出一次 $i,但在通过网络加载时却不会。
您的解决方法是启用隐式刷新:http://php.net/manual/en/function.ob-implicit-flush.php
并删除那个 ob_start()
调用。以下代码完美运行:
<?php
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
ob_implicit_flush (1);
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
flush();
ob_flush();
sleep(1);
}
?>
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
ob_start();
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
flush();
ob_flush();
sleep(1);
}
为什么这些代码不是每秒输出$i? 10秒后输出
在我看来,当从终端 运行 时,您的代码确实每 1 秒稳定输出一次 $i,但在通过网络加载时却不会。
您的解决方法是启用隐式刷新:http://php.net/manual/en/function.ob-implicit-flush.php
并删除那个 ob_start()
调用。以下代码完美运行:
<?php
header( 'Content-type: text/html; charset=utf-8' );
echo 'Begin ...<br />';
ob_implicit_flush (1);
for( $i = 0 ; $i < 10 ; $i++ )
{
echo $i . '<br />';
flush();
ob_flush();
sleep(1);
}
?>