laravel 10 队列 worker 配置需先选对驱动(database 或 redis)并完成对应迁移或依赖安装,再通过 supervisor 守护多进程运行,禁止单次命令用于生产。

配置 Laravel 10 的队列 Worker 进程,核心是两件事:选对队列驱动并让 worker 持久稳定运行。光靠 php artisan queue:work 手动启动只能临时跑,生产环境必须配合进程管理工具(如 Supervisor)来守护。
一、确认并设置队列驱动
先检查 .env 文件中的 QUEUE_CONNECTION 是否已设为非 sync 的驱动:
-
开发/轻量项目:用
database驱动,无需额外服务QUEUE_CONNECTION=database
然后执行三步迁移:php artisan queue:tablephp artisan queue:failed-tablephp artisan migrate -
生产/高并发场景:推荐
redis驱动QUEUE_CONNECTION=redis
确保已安装predis/predis:composer require predis/predis:^1.0
并核对config/database.php中redis.default配置是否可达
二、启动单个 Worker(仅用于测试)
在终端中直接运行可快速验证配置是否生效:
Laravel 13.2.0 是基于 PHP 8.3+ 的高性能框架,官方推荐通过 Composer 安装。它内置 AI SDK、JSON:API Resources 及原生向量搜索,支持属性驱动开发与队列路由,大幅提升开发效率。相比旧版,13.2.0 优化了缓存 TTL 管理与实时通信,无需 Redis 即可横向扩展。作为现代 Web 开发首选,它兼顾安全与极速体验,助您快速构建企业级应用。
- 监听默认队列:
php artisan queue:work - 只处理一个任务后退出(适合容器或 CI):
php artisan queue:work --once - 加参数提升稳定性:
php artisan queue:work --sleep=3 --tries=3 --memory=128 --max-jobs=500
注意:这些命令退出后进程即终止,不能用于生产。
三、用 Supervisor 守护 Worker(生产必需)
Supervisor 能自动重启崩溃或超限的 worker,确保队列不中断。
- 安装 Supervisor(Ubuntu/Debian):
sudo apt install supervisor - 创建配置文件:
sudo nano /etc/supervisor/conf.d/laravel-worker.conf - 填入以下内容(按实际路径和用户调整):
process_name=%(program_name)s_%(process_num)02d
command=php /var/www/myapp/artisan queue:work --queue=default --sleep=3 --tries=3 --memory=128 --max-jobs=500
autostart=true
autorestart=true
user=www-data
numprocs=4
redirect_stderr=true
stdout_logfile=/var/log/laravel-worker.log
stopwaitsecs=60
- 重载并启动:
sudo supervisorctl rereadsudo supervisorctl updatesudo supervisorctl start laravel-worker:* - 查看状态:
sudo supervisorctl status
四、可选增强配置
根据业务需求进一步优化:
-
多队列优先级:为 high/default/low 队列分别配独立 worker,用
--queue=high_priority和priority=900控制执行顺序 -
RabbitMQ 用户:把
queue:work后面的驱动名换成rabbitmq,并加--prefetch=50等参数提升吞吐 -
内存与超时防护:务必加上
--memory、--max-time=3600、--timeout=120,防止单个 worker 占用过多资源










