例如,如果我有一个echo语句,不能保证浏览器可能会立即显示它,可能会一次显示几十个echo语句,可能要等到整个页面完成后才会显示任何内容。
有没有一种方法可以让每个echo在执行时出现在浏览器中?
发布于 2008-09-25 07:28:13
您可以使用flush()
强制将缓冲区内容发送到浏览器。
您可以使用"ob_implicit_flush(true)
“启用隐式刷新。
发布于 2008-09-25 07:35:56
function printnow($str, $bbreak=true){
print "$str";
if($bbreak){
print "<br />";
}
ob_flush(); flush();
}
显然,如果你向它传递复杂的对象(或者至少那些没有实现__toString的对象),这将不会表现出来,但是,你明白了。
发布于 2008-09-25 08:07:11
正如其他人指出的,除了PHP之外,还有一些地方可能会挂起(例如,web服务器或客户端的浏览器)。如果您确实希望确保信息在可用时显示,那么您可能需要一些基于AJAX的解决方案。您将有一个处理显示的PHP脚本和另一个处理计算的PHP脚本,并让display脚本向另一个脚本发出AJAX请求。jQuery有一些非常简单的AJAX函数,可能会在这方面对您有所帮助。
如果浏览器不支持/禁用了JavaScript,您还需要有一个后备,因为它只是一个标准页面,直到页面结束时才会显示内容。
https://stackoverflow.com/questions/133935
复制