Laravel队列核心是异步执行耗时操作,配置需选对驱动(如Redis)、定义任务类、正确分发(dispatch)、守护进程运行(如Supervisor),四步确保稳定高效。
在 Laravel 中使用队列,核心是把耗时操作(如发邮件、生成报表、调用第三方 API)从 Web 请求中剥离,交给后台进程异步执行,避免用户等待。关键不是“能不能用”,而是“怎么配得稳、跑得准、看得清”。
Laravel 支持多种队列后端:database(适合开发)、redis(推荐生产)、sync(同步,仅用于调试)、beanstalkd 等。先在 .env 中指定默认驱动:
QUEUE_CONNECTION=redis然后确保 config/queue.php 中对应连接已正确定义。例如 Redis 连接需确认 REDIS_HOST 和 REDIS_PASSWORD 正确;若用 database 驱动,需先运行:
php artisan queue:table用 Artisan 命令快速创建任务:
php artisan make:job SendWelcomeEmail在生成的 app/Jobs/SendWelcomeEmail.php 中,实现 handle() 方法。注意几点:
ID 查询模型(Eloquent 模型支持延迟加载)不直接 new + handle(),而是用 dispatch() 方法推入队列:
// 控制器中常见分发方式:
开发时可用:
php artisan queue:work但生产环境必须用进程管理工具长期运行,否则终端关闭就停了。推荐:
同时开启多个队列监听器可提升吞吐,例如分别监听 emails 和 reports 队列:
php artisan queue:work --queue=emails基本上就这些。配对驱动、写好任务、正确分发、守护运行——四步走稳,队列就不只是“能用”,而是真正扛住业务压力的后台引擎。