You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Supervisor运行queue:work但未执行Laravel队列任务求助

解决Laravel队列进程运行但任务未处理的问题

从你的配置和进程状态来看,最核心的问题大概率出在命令参数的格式错误上,我们一步步拆解排查:

1. 修复命令中的参数拼写问题

先看你的Supervisor配置里的command字段:

command=php ~/www/artisan queue:work --queue=default--tries=3 --daemon

这里--queue=default和--tries=3之间缺少了空格,导致Laravel把队列名称识别成了default--tries=3,而你的任务实际在default队列里,进程自然找不到要处理的任务。

把命令修正为:

command=php ~/www/artisan queue:work --queue=default --tries=3

另外补充:Laravel 5.3及以后版本已经移除了--daemon选项,queue:work默认就是守护进程模式,所以可以直接去掉这个参数,避免日志里出现不必要的警告。

2. 让Supervisor配置生效并重启进程

修改完配置文件后,需要执行以下命令让新配置生效:

supervisorctl reread
supervisorctl update
supervisorctl restart laravel-worker:*

3. 手动验证命令有效性

先脱离Supervisor,直接在终端运行修正后的命令:

php ~/www/artisan queue:work --queue=default --tries=3

观察是否能正常处理数据库中的任务:

  • 如果手动运行可以处理,说明问题确实出在Supervisor的命令配置上,重启进程后就正常了
  • 如果手动运行也不行,继续排查以下点:
    • 检查jobs表中的queue字段值是否确实是default,有没有拼写错误
    • 查看Laravel日志~/www/storage/logs/laravel.log,看是否存在数据库连接失败、文件权限不足等异常信息
    • 确认运行Supervisor的用户有足够权限读取项目文件和访问数据库

4. 额外排查点

如果以上步骤都没问题,还可以检查:

  • 查看Supervisor自身的日志(可在Supervisor主配置文件中找到日志路径),是否有进程启动异常的记录
  • 用php artisan queue:failed命令查看是否有任务被标记为失败,导致无法重复执行

内容的提问来源于stack exchange,提问作者Luke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 09:05:49