队列这个知识相对比较冷门,由于平时的CURD基本用不到这个知识,今天用到了,因此就写个博客记录一下吧。php
首先你得清楚要用什么驱动,除了database队列驱动(选择database驱动要php artisan queue:table php artisan migrate执行这两条命令,具体参考laravel学院文档或官方文档),还有html
Amazon SQS: aws/aws-sdk-php ~3.0
laravel
Beanstalkd: pda/pheanstalk ~3.0
redis
Redis: predis/predis ~1.0等
spa
系统默认的是我此次选用的是redis,由于要延时60分钟处理。code
因此在.env文件中驱动改为redis。htm
选择好驱动以后,固然要干咱们的正事了,撸“队列”代码了。blog
先执行token
会在App\Jobs目录下生成HandleOrder.php文件,相似队列
这里我已经写过一些代码了。因此稍微有一点差别。我这边是订单的延时处理。在handle()方法里写代码逻辑。
在你写完这里的代码逻辑以后,你一点回想,我怎么才能跑这里的代码呢,别急,这个很简单。
在你想要调用这个队列的地方,加上
或者
这两条代码是等价的。我这里是延时60分钟的,由于 Amazon SQS 队列服务最大延迟 15 分钟。因此,选用了redis。
固然,你能够链式调用 onConnection
和 onQueue
方法 来同时指定任务的链接和队列
而后能够设置最大尝试次数
php artisan queue:work --tries=3
设置最大超时数
php artisan queue:work --timeout=30
运行队列
php artisan queue:work
还有许多其余的操做能够参考官网。