使用执行函数的 php 后台进程

2022-08-30 22:14:30

我搜索了很多以找到确切的答案,但没有找到任何答案。

许多人提到我们应该命令结束时不要等待回应。
例如,在后台运行bg.php,建议这样做:

exec("/usr/bin/php bg.php &");  

但它对我不起作用。主脚本等待 bg.php 的完全执行。

我还在某个地方读取了在日志文件中写入bg.php输出,但我的后台脚本不产生任何输出。它执行一些过程,然后在数据库中写入一些内容。

我只想让我的脚本运行bg.php不要等待它结束。

请帮助我包括正确的代码。


答案 1

你也必须在某个地方重新路由程序输出,通常是 /dev/null

exec($cmd . " > /dev/null &");

答案 2

您是否考虑过使用屏幕?您可以启动在分离进程中运行的屏幕会话。

screen -d -m -S my_bg_session /usr/bin/php bg.php

然后,如果它仍在运行,您可以稍后连接到它:

screen -r my_bg_session

推荐