PHP 中的 Asynchronous shell exec

2022-08-30 06:21:48

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

我已经研究了各种,,等功能,但它们似乎都没有提供我想要的。(或者,如果他们这样做,我不清楚如何。有什么建议吗?exec()shell_exec()pcntl_fork()


答案 1

如果它“不关心输出”,难道不能调用脚本的exec来后台处理过程吗?&

编辑 - 结合@AdamTheHut对此帖子的评论,您可以将其添加到调用中:exec

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

这会将(第一个)和()重定向到并在后台运行。stdio>stderr2>/dev/null

还有其他方法可以做同样的事情,但这是最简单的阅读方法。


上述双重重定向的替代方法:

" &> /dev/null &"

答案 2

我用了,因为它实际上是开始一个独立的过程。

<?php
    `echo "the command"|at now`;
?>

推荐