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