Laravel队列执行时终端处理编号重置与格式修改问题咨询
问题1:时间旁的数字含义
是的,该数字是当前运行的queue:work进程自启动以来已成功处理的任务累计数。
问题2:重启后计数累加的解决方法
原生Laravel的队列计数默认只存储在当前进程的内存中,正常终止进程后重启一定会从0开始计数。你遇到累加的情况,几乎都是旧的队列进程没有被完全关闭,仍然在后台运行导致的。
你可以先执行命令终止所有队列进程:
pkill -f "php artisan queue:work"
之后再重新启动队列命令:
php artisan queue:work
计数就会从0开始。如果是用Supervisor管理队列进程,执行对应进程的重启命令即可。
你之前执行的php artisan optimize:clear是清理框架缓存,和队列进程的内存计数没有关联,自然不会生效。如果执行完进程终止命令后重启仍然累加,检查你是否安装了第三方队列相关扩展,部分扩展会将处理计数持久化到缓存/数据库中,需要到对应扩展的配置中关闭持久化计数或者手动重置存储的计数值。
问题3:将计数修改为字符串格式
原生Laravel没有提供直接修改该输出的配置项,你可以通过重写队列工作者的输出逻辑实现:
- 继承
Illuminate\Queue\Worker类,重写其中的writeStatus方法,该方法负责生成队列运行的状态输出,你可以把计数逻辑替换为你想要的字符串内容。 - 在
App\Providers\AppServiceProvider的register方法中,将你自定义的Worker类绑定到容器,替换Laravel默认的Worker实现即可。
如果不想修改核心逻辑,也可以给队列启动命令加--quiet参数关闭原生输出,然后监听JobProcessed事件,自定义输出你想要的任何格式的日志。
内容的提问来源于stack exchange,提问作者SWAT 10101
相关产品推荐
相关产品推荐

