如何从
PHP获得实时输出?没有全部存储在内存/缓冲区中并立即回显浏览器?
如果我创建一个realtime-echo.PHP
<?PHP for($i = 0; $i < 10; $i++) { echo $i; sleep(1); }
并从互联网浏览器访问它,它在9-10秒后提供以下输出.
0123456789
0
然后等待1秒然后在“0”后加“1”
然后等待1秒然后在“1”后加“2”
等等.
idk是什么叫做动画/实时.
怎么做到这一点?
我正在研究我需要恒定输出的项目,所以我可以留意发生的事情和它的发展方向.
谢谢
如果希望显示当前输出,请使用
flush()
功能.
一个简单的例子:
<?PHP for ($i = 1; $i <= 10; $i++) { echo '<p>' . $i . '</p>'; flush(); sleep(1); } ?>
如果您正在使用输出缓冲,则还需要调用ob_flush()
注意:某些版本的Microsoft Internet Explorer仅在收到256字节输出后才开始显示页面,因此您可能需要在刷新之前发送额外的空格以使这些浏览器显示该页面.
像这样的东西:
<?PHP echo str_repeat(" ",256); flush(); ?>
工作示例(没有ob_start()函数):
<?PHP echo str_repeat(" ",256); for ($i = 1; $i <= 10; $i++) { sleep(1); echo '<p>' . $i . '</p>'; flush(); } ?>