Exec - shell_exec - 将输出转换为进度条

时间:2013-05-18 10:39:39

标签: php jquery process background-process execute

我有两个函数,一个在后台用exec()运行一个线程并返回输出

function runThread($cmd, $priority = 0){
    if($priority){
        exec(sprintf('nohup nice -n %s %d > /dev/null 2>&1 & echo $! &',$priority, $cmd),$pid);
    }else{
        exec(sprintf('nohup %s > /dev/null 2>&1 & echo $! &',$cmd),$pid);
    }
    return $pid[0];
}

另一个使用shell_exec()监视线程,并在完成时返回false

function isRunning($pid){
    try{
        $result = shell_exec(sprintf("ps %s", $pid));
        if( count(preg_split("/\n/", $result)) > 2){
            return true;
        }
    }catch(Exception $e){}

    return false;
}

我不想返回true或false,而是根据运行整个线程所需的时间返回值,这样我就可以合并一个AJAX进度条,例如:返回20%,返回40%等。这可能与shell_exec()或我应该使用proc_open()之类的东西,以及如何实时返回线程的当前状态?

感谢您的帮助

0 个答案:

没有答案