赶紧排查了一下日志, 发现队列中的日志打点数据有问题,随后增加更多打点, 最后定位到了这个地方....queue:restart重置
所以可以用queue:restart这条命令去停止队列进程(并不会自动启动队列进程,可以配合Supervisor来自动重启)
接下来是一个死循环,来达到进程不被杀死
第一个逻辑判断死看程序是否已经启动的维护模式...,强制运行等等,就是队列任务是否能继续处理的前置判断
所以我们想临时暂停队列进程,可以向进程发送一个SIGUSR2信号,这时候队列进程处理完当前任务下一次就会停止,当想继续处理的时候,再发送一个SIGCONT...那么就结束任务
下一步如果取出来的没任务, 那么就程序休眠, 否则就运行任务, 这里可以去看一下任务的实际运行代码
Laravel
Laravel
这里我们直接看fire方法即可..., 然后找到对应的队列驱动类,继承了父级的fire方法
Laravel
实际上是反射了这个job类然后调用它对应的方法
循环前的最后一个代码块就是stopIfNecessary, 看进程是否需要终止