不知道有没有办法让PHP脚本返回并立即在浏览器上打印(通过网页)各种功能的结果,而无需等待下一个完成。
示例PHP代码:
<? php
for ($i = 0; $i < 100; $i++) {
echo $i. ":". my_function(); / / takes a long time to run
}
?>
释放:
0: value ... (the function of the cycle $i = 1 is still running)
1: value ... (the function of the cycle $i = 2 is still running)
依旧......
答案 0 :(得分:1)
您可以使用flush()函数尝试将数据刷新回浏览器。
来自php.net的描述:刷新PHP的写缓冲区以及PHP正在使用的后端 (CGI,Web服务器等)。这会尝试全部推动电流输出 浏览器的方法有一些警告。
flush()可能无法覆盖您网络的缓冲方案 服务器,它对任何客户端缓冲没有影响 浏览器。它也不会影响PHP的用户空间输出缓冲 机制。这意味着你必须同时调用ob_flush()和 flush()用于刷新ob输出缓冲区,如果你正在使用它们。
下面的示例代码,在chrome 31.0.1650.57(linux),Safari(6.0.4)(osx)上测试:
注意:是否显示刷新的输出取决于浏览器(通常取决于响应中的数据量)。例如,Safari(6.0.4)在将数据输出到浏览器之前需要512字节的数据。你可以通过在输出开头填充512个字符来解决这个问题。
<?php
header( 'Content-type: text/html; charset=utf-8' );
echo str_repeat(" ",512); //pad the buffer with data (in case browser needs it)
while (true){
//write go to the browser every 2 seconds.. forever
echo "go...<br/>";
ob_flush();
flush();
sleep(2);
}
?>