如何让网页停止长时间运行的过程

时间:2015-02-10 14:25:16

标签: php

我有以下代码,它运行一个永远运行的进程(直到被杀死)并显示结果(使用tail -F如下图所示):

<?php
$cmd = "tail -F /var/log/whatever.log";
set_time_limit(0);

$handle = popen($cmd, "r");

if (ob_get_level() == 0)
    ob_start();

while(!feof($handle)) {

    $buffer = fgets($handle);
    echo $buffer . "<br />";
    ob_flush();
    flush();
    sleep(1);
}

pclose($handle);
ob_end_flush();
?>

这种工作,我的流程运行,但是当我停止加载页面,关闭标签等时它会继续运行。

当我没有显示页面时,是否有一些机制可以利用来停止进程?我确定有,但不清楚。

1 个答案:

答案 0 :(得分:1)

...
header("Content-type:text/html");// start the content serving
echo("\n"); // connection with the browser
while(!feof($handle)) {
    $buffer = fgets($handle);
    echo $buffer . "<br />";
    ob_flush();
    flush();
    sleep(1);
    if (connection_status()!=0){ // check the connection
        die; // or whatever you want to stop the work 
    }
}

...