說明:這是laravel官方提供的辦法,我寫出來是因為我在百度和必應都搜不到正確答案
官方文件:佇列《Laravel 5.8 中文文件》laravel 5.6+
1、每分鐘限制執行10次JOB(注意是JOB,而不是整個佇列)
use Illuminate\Support\Facades\Redis;
Redis::throttle('key')->allow(10)->every(60)->then(function () {
// 任務邏輯...
}, function () {
// 無法獲得鎖...
return $this->release(10);
});
2、併發,限制同一時間只執行一個JOB
Redis::funnel('key')->limit(1)->then(function () {
// 任務邏輯...
}, function () {
// 無法獲得鎖...
return $this->release(10);
});
方法裡的引數key
是自定義的redis key,如果需要多個job共用一個限制,則可以使用同一個key
本作品採用《CC 協議》,轉載必須註明作者和本文連結