我经常搜索以找到确切的答案,但没有找到任何答案。
很多人提到我们应该在命令结尾处& 等待响应。
例如,在后台运行 bg.php ,建议这样做:
exec("/usr/bin/php bg.php &");
但它对我不起作用。并且主脚本等待 bg.php 的完整执行。
我还读过某个地方在日志文件中写 bg.php 输出,但我的后台脚本不会产生任何输出。它做了一些过程然后在数据库中写了一些东西。
我只想让我的脚本运行bg.php而不要等到它结束。
请帮我包括正确的代码。
答案 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