PHP中的异步shell exec

我有一个PHP脚本,需要调用一个shell脚本,但不关心输出。 shell脚本执行一些SOAP调用,并且执行速度很慢,所以我不想在等待回复时减慢PHP请求的速度。 事实上,PHP请求应该能够在不终止shell进程的情况下退出。

我研究了各种exec()shell_exec()pcntl_fork()等函数,但他们都没有提供我想要的。 (或者,如果他们这样做,我不清楚如何。)任何建议?


如果它“不关心输出”,那么可以用&来调用该脚本的执行程序来处理该进程的后台?

编辑 - 结合@AdamTheHut评论到这篇文章,你可以添加到调用exec

" > /dev/null 2>/dev/null &"

这会将stdio (第一个> )和stderr2> )重定向到/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