php后台进程使用exec函数

时间:2012-10-11 15:07:48

标签: php exec background-process

我经常搜索以找到确切的答案,但没有找到任何答案。

很多人提到我们应该在命令结尾处& 等待响应。
例如,在后台运行 bg.php ,建议这样做:

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

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

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

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

请帮我包括正确的代码。

2 个答案:

答案 0 :(得分:22)

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

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

答案 1 :(得分:1)

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

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

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

screen -r my_bg_session