创建队列
命令行执行下面的命令,生成job文件
php artisan make:job 任务名
编写任务
在app/Jobs目录下找到任务文件,在handle()
方法中写任务具体代码
分发任务
在控制器中调用该队列的dispatch()
方法,相当于往队列添加一个任务
SendEmail::dispatch(); //SendEmail是我的任务文件类名
访问控制器中的方法,在控制器或者其他调用dispatch()
方法的地方会往队列插入任务到队列,队列启动监听后会自动执行,也就是消费队列中的任务。
监听队列
在命令行启动队列监听
php artisan queue:work
延迟队列
有时候我们不希望任务马上执行,而是等待一段时间后再执行,应用场景例如订单超时取消,会员提前续费通知,消息失败重发等等很适合用延迟队列来解决。要使用延迟队列,我们只需要在分发任务时调用delay
方法即可实现,例如等待10分钟后再发送邮件:
SendEmail::dispatch()->delay(now()->addMinutes(10)); //SendEmail是我的任务文件类名
更多用法参考官方文档:https://learnku.com/docs/laravel/5.5/queues/1324#260f10
网友评论