Как выполнять некоторое действие не чаще чем N раз в единицу времени?

В БД лежит информация о пользователе, по внешнему событию включается обработчик который выполняет некоторое действие относительно пользователя.
Как ограничить количество действий выполняемых относительно пользователя в единицу времени?
К примеру предположим что у нас есть граничение не более 200 действий за один час относительно одного пользователя.
Как такое реализовать?
  • Вопрос задан
  • 281 просмотр
Решения вопроса 1
maaGames
@maaGames
Погроммирую программы
Сохранять для пользователя временнУю метку и количество действий в течении текущего часа. Или просто временнУю метку, если она автоматически определяет количество операций (если разрешена только одна операция в минуту, то в час будет не более 60 операций и счётчик не понадобится).
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
iCoderXXI
@iCoderXXI
React.JS/FrontEnd engineer
Если события поступают достаточно часто, то при успешной обработке писать в поле mictorime(TRUE).
Перед отработкой проверять это поле и текущий microtime(TRUE) и отбрасывать событие, если еще не вышел расчетный таймаут. Для 200 событий в минуту таймаут будет 60/200.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы