Laravel中如何使用队列处理任务
在Laravel中,队列用于异步处理耗时操作,避免拖慢主流程。步骤包括:选择数据库或Redis等驱动,创建任务类,在handle方法中编写业务逻辑,通过dispatch分发任务,启动queue:work工人进程,并可用Horizon进行监控管理。
在 Lara vel 中,队列的存在就是为了解决“慢操作”对业务主流程的拖累。比方说,用户下单后需要发邮件,如果直接在请求里发,响应时间必然拉长;扔到队列里异步处理,主线程就能秒回。这个思路说起来简单,真正用起来,其实也就几个固定步骤。

第一步,先决定队列怎么存。Lara vel 支持 database、redis、sqs 等驱动,具体选哪个,在 .env 文件里改 QUEUE_CONNECTION 就行。如果选 database,记得跑一下迁移创建 tasks 表;选 redis 的话得把 Redis 服务配置好。这一步本质上就是告诉框架:“我打算用哪种方式管理待办任务”。
第二步,创建任务类。用 Artisan 命令 php artisan make:job SendEmailJob,框架会在 app/Jobs 目录下生成一个类文件。这好比是专门定义了一个“工作说明书” —— 之后只需要告诉工人去执行这份说明书就行。
第三步,写干活逻辑。打开刚生成的 SendEmailJob.php,在 handle 方法里放实际要执行的代码。比如发邮件:
public function handle()
{
Mail::to('example@example.com')->send(new OrderShipped($order));
}
注意,任务类可以接收参数(比如上面的 $order),框架会自动序列化并传给工人进程。
第四步,把任务扔进队列。在控制器或其他地方用 dispatch 函数触发:
use App\Jobs\SendEmailJob;
public function store(Request $request)
{
// 处理请求数据……
dispatch(new SendEmailJob($order));
}
这一步之后,任务就已经排队了——它并不会立刻执行,而是等着工人进程来取。
第五步,启动工人。终端里跑 php artisan queue:work,这个命令会一直挂在那里,监听队列,有任务就取出来执行。可以同时开多个终端窗口跑多个工人,提高并发处理速度。生产环境通常用 supervisord 之类的进程管理工具来保证工人永远在线。
第六步,也是进阶选项:监控与管理。用 php artisan queue:status 可以查看队列的基本状态。但更推荐用 Lara vel Horizon,它提供了一个漂亮的仪表盘,还能配置队列平衡、失败任务重试等。安装方式:
composer require lara vel/horizon
php artisan vendor:publish --provider="Lara vel\Horizon\HorizonServiceProvider"
然后在 app/Console/Kernel.php 中注册相应的 Horizon 命令(框架一般会自动注册,但如果手动配置,可以参考如下写法):
protected $commands = [
Commands\ListQueues::class,
// ……其他命令
];
一切就绪后,运行 php artisan horizon 就能打开监控界面,实时看每个队列的吞吐、负载和失败任务。
回过头看,Lara vel 队列的用法其实就这几步:选驱动 → 创建任务 → 写逻辑 → 分发 → 启动工人 → 监控。把耗时的操作丢给后台,前端响应自然就快了。这才是性能优化的关键所在。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















