由于项目的后端cron部署在运维的机器上,登录一次需要验证密码和动态PIN,上去kill队列的消费进程不太方便,看了下Laravel的文档,上面有个重启队列的命令queue:restart
,本地执行就可以使得执行cron的机器进行队列任务重启,于是看了下实现。
执行queue:restart
命令时,代码是这么运行的:
对缓存中的illuminate:queue:restart
这个key设定当前的时间戳为其值。
下述vendor/laravel/framework/src/Illuminate/Queue/Worker.php
文件中的代码表明这个key中的时间戳是怎么利用的:
daemon
方法执行队列中拿到的事件,每次执行完一个事件之后,程序对缓存中illuminate:queue:restart
中的时间戳进行判断,如果和daemon
方法启动时的时间戳不同,那么说明发生了变化,程序需要重启。
由此,对程序中消费Redis里面Monolog产生的错误日志到Sentry系统的程序进行了改动: