为了账号安全,请及时绑定邮箱和手机立即绑定

如何确保从队列作业启动的进程在超时后终止?

如何确保从队列作业启动的进程在超时后终止?

PHP
撒科打诨 2021-10-15 15:54:00
我在终止从队列作业启动的进程时遇到问题。我使用 yii2-queue 扩展来运行一些长时间运行的系统命令,这些命令的总执行时间限制由getTtrRetryableInterface的方法控制。该命令可能需要几分钟到几小时才能完全完成,但我需要在达到 60 分钟标记后将其终止。    <?php    use Symfony\Component\Process\Process;    use yii\base\BaseObject;    use yii\queue\RetryableJobInterface;    class TailJob extends BaseObject implements RetryableJobInterface    {        public function getTtr()        {            return 10;        }        public function execute($queue)        {            $process = new Process('tail -f /var/log/dpkg.log');            $process->setTimeout(60);            $process->run();        }        public function canRetry($attempt, $error)        {            return false;        }    }现在,我面临的问题是,即使queue/listen终止作业,tail命令(这只是一个示例;在生产中我需要运行不同的命令)仍在后台运行。有什么办法可以强制系统tail在作业被终止时终止命令?
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信