PHP立即获得函数返回

时间:2014-01-16 10:15:11

标签: php

不知道有没有办法让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)

依旧......

1 个答案:

答案 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);
}
?>

此处有更多信息http://us1.php.net/manual/en/function.flush.php