如何在php脚本仍在运行时显示结果

时间:2011-09-27 14:00:08

标签: php

所以我尝试了Show results while script is still executing

但由于某种原因它不起作用,所以这是我到目前为止所做的:

ob_start();
include "../../common.php";

set_time_limit (0);

$start = (string) $_GET['start'];
$end = (string) $_GET['end'];

for($i = $start; strcmp($i, $end); $i = bcadd($i, 1)){

echo $i;
ob_flush();

}

ob_end_flush(); 

更新代码

*请注意,此代码尚未运行!

set_time_limit(0);

$start = $_GET['start'];
$end = $_GET['end'];

for(;$start < $end;$start++){
$content = file_get_contents("[some internal page]");
echo $content;
usleep(10); 
flush();
}

3 个答案:

答案 0 :(得分:2)

在致电ob_flush()后尝试添加对flush()的通话。这仅在您的服务器配置为能够执行此操作时才有效,并且不保证客户端能够理智地处理它,但这是您最好的选择。

我遇到的一个问题是你有zlib.output_compression配置你绝对不能这样做,完全停止。 zlib输出压缩过程在执行任何代码之前启动,并且在运行时使用ini_set()等不能由脚本控制。

答案 1 :(得分:1)

您通常需要同时拨打flush()ob_flush()。请参阅:http://php.net/manual/en/function.flush.php

此外,您无法对客户端上的浏览器缓冲区执行任何操作。浏览器将根据需要长时间或尽可能地缓冲数据。某些服务器也可能不支持刷新缓冲区。

答案 2 :(得分:1)

ob_flush()之后; add flush();这实际上刷新了写缓冲区和输出缓冲区。 ob_flush刷新到写缓冲区,flush()然后将其推送到客户端。通常至少。