Используйте класс `Illuminate\Cache\RateLimiter`.
$limiter = app()->make(Illuminate\Cache\RateLimiter::class); // Или завозите через DI
$limiterKey = request()->ip() . '_readNotifications'; // Какой-то ключ, по которому будет вестись счётчик
$decayIntervalInSeconds = 60; // Время, за которое считается счётчик, секунды
$limiterThreshold = 2; // Кол-во событий
// В данном случае 2 события в 60 сек.
// Проверяем счётчик
if ($this->limiter->tooManyAttempts($limiterKey, $limiterThreshold)) {
throw new TooManyRequestsHttpException($decayIntervalInSeconds);
}
// Добавляем попытку
$this->limiter->hit($limiterKey, $decayIntervalInSeconds);
// ... Делаем что-то
Лучше в какой-то метод обернуть или в сервис вынести.