我有两个函数,一个在后台运行一个线程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;
}
我不想返回真或假,而是根据运行整个线程所需的时间返回值,这样我就可以合并一个 AJAX 进度条,例如返回 20%、返回 40% 等。这是否可能shell_exec()
或应该我使用类似的东西proc_open()
,如何实时返回线程的当前状态?
谢谢你的帮助