Laravel 佇列執行頻率限制

y-ui發表於2019-06-19

說明:這是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 協議》,轉載必須註明作者和本文連結

相關文章