如果我用exec()启动一个进程,我怎么能在以后按下/发送“q”键来终止该进程。现在,当我执行该过程时,PHP将一直挂起,直到它完成并返回。
答案 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_fork
和pcntl_exec
启动您的计划,并使用posix_kill
来终止该计划。
答案 3 :(得分:0)
如果我用exec()启动一个进程,我怎么能在以后按下/发送“q”键来终止该进程。
您可以查看使用proc_open
,而不是使用exec
,这需要您传入一个数组,指定三个streams - 一个用于stdin
,一个用于stdout
和stderr
一个。
这样可以在处理输出时轻松地将输入提供给程序,而不会阻止 等待它执行。如果需要,您可以稍后使用proc_terminate
恶意谋杀它。