Обычный формат, который я видел для использования Redis::throttle
, это
Redis::throttle('key')->allow(1)->every(60)->then(function(){
// run code x here
});
// run code y here
Но code x
и code y
оба запускаются в одинаковых условиях - если регулятор должен ждать c, он ожидает se c, затем выполняет код x, а затем выполняет код y - он ожидает в обоих случаях. И если регулятор решает, что ожидание слишком длинное, он выдает \Illuminate\Contracts\Redis\LimiterTimeoutException
и не запускает x или y.
Итак, мой вопрос заключается в следующем: есть ли что-то не так с простым пропуском ->then
в целом и просто выполняю
Redis::throttle('key')->allow(1)->every(60);
// run code x here
Потому что в настоящий момент я не вижу смысла в обратном вызове.
[править] после небольшого тестирования дроссель не работает на самом деле не работает, если вы не поставите ->then
и обратный вызов. ОДНАКО, вам не нужно вводить какой-либо код в обратный вызов, так что вы все равно можете сделать
Redis::throttle('key')->allow(1)->every(60)->then(function(){});
// run code x here