PHP:在运行时打印出状态消息

时间:2011-09-17 21:08:00

标签: php runtime status

我正在开发一个长期运行的php脚本,它编译来自多个来源的抓取信息,组织它们并将它们缓存在数据库中。

由于此脚本的运行时间非常长,我想打印运行时状态报告以跟踪进度。

for ($i = 1; $i<= 10; $i++) {
    echo "Starting iteration #$i\n";
    set_time_limit(40);
    echo "Time Limit set, starting 10 second sleep.\n";
    sleep(10);
    echo "Finishing iteration #$i\n\n";
}
echo "Iterations Finished.";

会输出:

  

开始迭代#1

     

时间限制设定,开始10秒睡眠

然后等待10秒并输出:

  

完成迭代#1

     

开始迭代#2

     

时间限制设定,开始10秒睡眠

然后在php完成解析之前,它将输出:

  

完成迭代。

实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:3)

如果从CLI运行PHP,则可以直接输出到stdout,而无需等待脚本 结束,使用:

$handle = fopen('php://stdout', 'r');
fwrite($handle, $output);

如果从CGI运行,这对于这样的脚本来说真的很糟糕,你将不得不改变缓冲区的行为方式flush();

答案 1 :(得分:1)

尝试将运行时状态报告写入文件,然后根据以下问题使用ajax查看文件的实时更新:Live feed of an updating file