Laravel队列通过异步处理耗时任务提升应用性能,支持多种驱动如database、redis;需配置QUEUE_CONNECTION并生成数据表,使用php artisan make:job创建任务类,在handle方法中编写逻辑,通过dispatch分发任务,可设置延迟;运行php artisan queue:work启动监听器,建议生产环境用supervisor守护进程,失败任务存于failed_jobs表,合理配置可提升系统稳定性和响应速度。
在Laravel中,队列系统能有效将耗时任务(如发送邮件、处理图片、调用外部API等)延后执行,避免阻塞主线程,提升应用响应速度。通过配置队列驱动并编写任务类,你可以轻松实现异步处理。
配置队列驱动
Laravel支持多种队列驱动:sync(同步)、database、
redis
、beans
talk
d等。开发环境推荐使用database或redis。
修改
.env
文件设置默认驱动:
QUEUE_CONNECTION=database
若使用database驱动,需生成数据表存储任务:
phpartisan queue:table
php artisan migrate
创建队列任务类
使用Artisan命令生成任务:
php artisan make:job SendWelcomeEmail
生成的类位于
app/Jobs/
目录下。在
handle()
方法中编写耗时逻辑:
构造函数接收参数并传递给handle方法处理。
分发任务到队列
在控制器或其他业务逻辑中,使用
dispatch()
方法推送任务:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
SendWelcomeEmail::dispatch($user);
也可指定延迟执行:
SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(10));
任务会被写入队列表,等待worker处理。
启动队列监听器
运行以下命令启动队列
处理器
:
php artisan queue:work
该命令会持续监听新任务并执行。生产环境建议配合supervisor守护进程,防止worker意外退出。
查看任务失败记录可在
failed_jobs
表中查询,也可配置失败重试策略。
基本上就这些。合理使用Laravel队列,可显著提升用户体验和系统稳定性。关键是选对驱动、正确分发任务,并确保worker正常运行。不复杂但容易忽略细节。
public function handle()
{
// 模拟发送邮件
Mail::to($this->user)->send(new WelcomeMail());
}
