我有一个从命令行启动的 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 库的更多信息。