laravel如何執行超長時間代碼
一、總結
一句話總結:
laravel可以用【自定義隊列】執行超長時間代碼,並且【expire設置為0】
'cust' => [ 'driver' => 'redis', 'connection' => 'queue', 'queue' => 'cust', 'expire' => 0, ],
二、laravel如何執行超長時間代碼
轉自或參考:https://learnku.com/laravel/t/28377
(一)、需求
1. 后台執行,並且可以隨時查詢執行進度.
2. 這個超長時間 可能是 5 分鍾或者 1 個小時.
需求主要是從網站后台 web 方式點擊執行,讓其可以在后台運行,這樣我 web 可以關閉,后期隨時來查看執行狀態
(二)、解決
自定義隊列
估計要采用自定義 queue,supervisor 單獨運行一個
php artisan queue:work --queue=cust ... 這樣就可以和其他的隊列區分開了
然后代碼里
dispatch((new Job)->onQueue('cust'));
config/queue.php 里面設置這個多 queue
'cust' => [
'driver' => 'redis',
'connection' => 'queue',
'queue' => 'cust',
'expire' => 0,
],