隊列這個知識相對比較冷門,因為平時的CURD基本用不到這個知識,今天用到了,所以就寫個博客記錄一下吧。
首先你得清楚要用什么驅動,除了database隊列驅動(選擇database驅動要php artisan queue:table php artisan migrate執行這兩條命令,具體參考laravel學院文檔或官方文檔),還有
Amazon SQS: aws/aws-sdk-php ~3.0
Beanstalkd: pda/pheanstalk ~3.0
Redis: predis/predis ~1.0等
系統默認的是
我這次選用的是redis,因為要延時60分鍾處理。
所以在.env文件中
驅動改成redis。
選擇好驅動之后,當然要干我們的正事了,擼“隊列”代碼了。
先執行
會在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
還有許多其他的操作可以參考官網。
