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

Laravel生产环境Queue:work运行但不处理任务求助

问题排查与解决步骤

1. 修复Supervisor配置的语法错误

你的Supervisor配置中command行末尾存在无效字符->,这会导致队列worker命令执行失败——即使Supervisor显示进程运行,实际worker并未正常启动。修改laravel-worker.conf中的command字段:

[program:laravel-worker]
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/xyz.com/artisan queue:work database --sleep=3
autostart=true
autorestart=true
user=root
numprocs=5
redirect_stderr=true
stdout_logfile=/var/www/xyz.com/storage/logs/laravel-queue.log

修改后执行以下命令重载配置并重启worker:

supervisorctl reread
supervisorctl update
supervisorctl restart laravel-worker:*

2. 确认Laravel队列连接配置

检查项目根目录.env文件,确保队列连接设置为database:

QUEUE_CONNECTION=database

若设置为sync,任务会同步执行(不会写入jobs表),但此时handle方法中的日志应该会生成;若未生成,说明任务未被分发。

3. 验证任务是否被触发分发

在控制器方法中添加日志,确认控制器是否被调用、任务分发指令是否执行:

public function GetDashboard(){  
    Log::info('Dashboard method called, attempting to dispatch job');
    SendLeaveNotificationEmail::dispatch();
    Log::info('Job dispatch command executed');
}

查看storage/logs/laravel.log,确认这两条日志是否存在。如果不存在,说明控制器方法未被访问,需先排查路由或请求链路问题。

4. 确认队列数据表存在

确保已执行过队列表生成与迁移命令:

php artisan queue:table
php artisan migrate

若未创建jobs表,任务无法存储到数据库,自然不会被worker处理。

5. 手动测试队列worker

先停止Supervisor的worker进程:

supervisorctl stop laravel-worker:*

进入项目目录手动启动队列:

cd /var/www/xyz.com
php artisan queue:work database --sleep=3

然后触发GetDashboard方法,观察终端输出、jobs表是否新增数据,同时查看laravel.log是否生成Job Dispatched日志。若手动运行正常,说明问题出在Supervisor配置;若仍无反应,继续排查Laravel本身的配置。

6. 检查文件权限

确保storage目录及其子目录有写入权限,即使使用root用户运行,也可能存在权限继承问题:

chmod -R 775 /var/www/xyz.com/storage
chown -R root:www-data /var/www/xyz.com/storage

7. 检查任务类命名空间与引入

确认SendLeaveNotificationEmail类的命名空间正确,且控制器中已正确引入该类:

// 控制器顶部添加use语句,根据实际命名空间调整
use App\Jobs\SendLeaveNotificationEmail;

若类未找到,Laravel会抛出错误;如果关闭了debug模式,错误可能不会写入日志,可临时开启.env中的APP_DEBUG=true排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:43:42