我从命令行启动了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信号。有关the pages provided by Gordon中his post中信号处理和pcntl库的更多信息。
答案 0 :(得分:1)
仔细阅读this Chapter的Practical PHP Programming。 它涵盖了与流程的广泛互操作。还可以查看Process Control上的PHP手册页面。
您可能也对Gearman
感兴趣很抱歉没有提供任何代码。我从来不需要过程控制的东西,所以我只是留在内存中,以防万一我需要它。