【问题标题】:php background process using exec functionphp后台进程使用exec函数
【发布时间】:2012-10-11 15:07:47
【问题描述】:

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

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

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

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

我还阅读了某处以将 bg.php 输出写入日志文件,但我的后台脚本不产生任何输出。它做了一些处理,然后在数据库中写入一些东西。

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

请帮我添加正确的代码。

【问题讨论】:

    标签: php exec background-process


    【解决方案1】:

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

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

    【讨论】:

    • 工作正常!但是 /dev/null 目录是什么?此命令是否将输出写入文件?
    • /dev/null 只是丢弃发送给它的数据,如果您需要程序输出,您可以将其路由到某个文件
    【解决方案2】:

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

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

    如果它还在运行,你可以稍后连接它:

    screen -r my_bg_session
    

    【讨论】:

      猜你喜欢
      • 2011-06-06
      • 2013-01-11
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 2012-06-14
      • 2013-01-02
      相关资源
      最近更新 更多