0

我有一个从命令行启动的 PHP 脚本(又名 CLI 模式,不涉及网络服务器)。

在这个脚本中,我启动了一个命令,该命令将在一段时间后运行,通常在几分钟后退出。但有时,由于各种问题,这个命令会运行几个小时,我能做的最好的就是杀死它并等待一段时间,然后再次启动它。

我想强调两点:

  • 我无法控制该命令中的代码,也无法改进故障检测。
  • 这不是一项重要的任务,让它以这种方式工作是完全可以的。

话虽如此,我想改进我的代码,以便在命令运行超过 N 秒时终止子进程。但是当它运行良好时,我仍然想从命令中获取返回码。

伪代码应该是这样的:

Launch command
While command is running
{
    If the command is done running
    {
        echo return code
    }
    else
    {
        If the command has been running for more than N seconds
        {
            Kill the child process
        }
    }
}

你将如何在 PHP 中实现这一点?

谢谢 !

解决方案:我最终使用了 SIG_ALERT 信号。Gordon他的帖子中提供的页面中有关信号处理和 pcntl 库的更多信息。

4

1 回答 1

1

通读《实用 PHP 编程》这一章。它广泛涵盖了与流程的互操作。还可以查看 PHP 手册中有关Process Control的页面。

您可能还对Gearman感兴趣

很抱歉没有提供任何代码。我从来不需要过程控制的东西,所以我只是记住了在哪里寻找以防万一我需要它。

于 2010-01-04T13:40:51.880 回答