PHP中的异步shell exec
我有一个PHP脚本,需要调用一个shell脚本,但不关心输出。 shell脚本执行一些SOAP调用,并且执行速度很慢,所以我不想在等待回复时减慢PHP请求的速度。 事实上,PHP请求应该能够在不终止shell进程的情况下退出。
我研究了各种exec()
, shell_exec()
, pcntl_fork()
等函数,但他们都没有提供我想要的。 (或者,如果他们这样做,我不清楚如何。)任何建议?
如果它“不关心输出”,那么可以用&
来调用该脚本的执行程序来处理该进程的后台?
编辑 - 结合@AdamTheHut评论到这篇文章,你可以添加到调用exec
:
" > /dev/null 2>/dev/null &"
这会将stdio
(第一个>
)和stderr
( 2>
)重定向到/dev/null
并在后台运行。
还有其他方法可以做同样的事情,但这是最简单的方法。
上述双重重定向的替代方案:
" &> /dev/null &"
我在用这个,因为它是真正开始独立的进程。
<?php
`echo "the command"|at now`;
?>
在Linux上,您可以执行以下操作:
$cmd = 'nohup nice -n 10 php -f php/file.php > log/file.log & printf "%u" $!';
$pid = shell_exec($cmd);
这将在prompty命令中执行该命令,然后返回PID,您可以检查> 0以确保其正常工作。
这个问题是类似的:PHP是否有线程?
链接地址: http://www.djcxy.com/p/6337.html上一篇: Asynchronous shell exec in PHP
下一篇: How do I shutdown