隊列這個知識相對比較冷門,由於平時的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
還有許多其餘的操做能夠參考官網。