Php 启动一个进程并获取其返回代码,如果持续时间过长,则中断该进程
我有一个从命令行启动的PHP脚本(也称为CLI模式,不涉及Web服务器) 在这个脚本中,我启动了一个从某个时间开始运行的命令,通常在几分钟后退出。但有时,由于各种问题,该命令会运行数小时,我所能做的就是杀死它并等待一段时间,然后再次启动它 我想强调两件事:Php 启动一个进程并获取其返回代码,如果持续时间过长,则中断该进程,php,asynchronous,background-process,Php,Asynchronous,Background Process,我有一个从命令行启动的PHP脚本(也称为CLI模式,不涉及Web服务器) 在这个脚本中,我启动了一个从某个时间开始运行的命令,通常在几分钟后退出。但有时,由于各种问题,该命令会运行数小时,我所能做的就是杀死它并等待一段时间,然后再次启动它 我想强调两件事: 我无法控制该命令中的代码,也无法改进故障检测 这不是一项重要的任务,让它以这种方式工作是完全可以的 也就是说,我希望改进代码中的内容,以便在命令运行超过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_警报信号。有关信号处理和pcntl库的详细信息,请参阅。
它广泛地涵盖了与流程的互操作。还可以查看上的PHP手册页面
您可能也对以下内容感兴趣:
很抱歉没有提供任何代码。我从来都不需要过程控制的东西,所以我只是在记忆中保留在哪里,以备需要。我一般都知道Gearman、Bearstack和消息队列,实际上我在同一个项目中使用Gearman,但目的完全不同。在这里,我不需要排队……我只想运行那个命令,如果它花费太多时间,就杀死它。不提供代码一点问题都没有。看起来你提供的链接对我很有用:)