用exec()启动后如何中断进程?

时间:2011-04-23 21:54:15

标签: php exec

如果我用exec()启动一个进程,我怎么能在以后按下/发送“q”键来终止该进程。现在,当我执行该过程时,PHP将一直挂起,直到它完成并返回。

4 个答案:

答案 0 :(得分:1)

function PsExec($commandJob) { 

    $command = $commandJob.' > /dev/null 2>&1 & echo $!'; 
    exec($command ,$op); 
    $pid = (int)$op[0]; 

    if($pid!="") return $pid; 

    return false; 
} 

稍后......         exec(“kill -9 $ pid”,$ output);

答案 1 :(得分:0)

如果您希望脚本退出而不管exec是否已完成,您可以将输出重定向到另一个文件,

exec("php dothis.php >> file.log");

我希望能帮到你

答案 2 :(得分:0)

您可以使用pcntl_forkpcntl_exec启动您的计划,并使用posix_kill来终止该计划。

答案 3 :(得分:0)

  

如果我用exec()启动一个进程,我怎么能在以后按下/发送“q”键来终止该进程。

您可以查看使用proc_open,而不是使用exec,这需要您传入一个数组,指定三个streams - 一个用于stdin,一个用于stdoutstderr一个。

这样可以在处理输出时轻松地将输入提供给程序,而不会阻止 等待它执行。如果需要,您可以稍后使用proc_terminate恶意谋杀它。