Разделы
Теги | RSS © 2008 – 2022
Контакты
email:
skype:
» » Scheduler

MySQL Event Scheduler


MySQL Event Scheduler

Есть проект в котором при заходе юзера(каждого!) на страницу авторизации, а это первая(главная) страница сайта, выполняются запросы к бд:
- на очистку таблицы антибрут которым уже больше 1-го часа
- на очистку таблицы антиспам которым уже больше 1-го часа
- посчитать количество неудачных попыток с этого айпи
- посчитать количество отправленных писем с этого айпи
Хоть это легкие запросы, все же это напрягало, 4 запроса на то, что бы подсовывать капчу, или нет.

Логично что нужно избавится от первых 2 запросов(не зачем каждому юзеру выполнять их). Как решение, ставить скрипт по крону - можно, но оказывается - не нужно.
В бд MySQL есть свой Event Scheduler DAEMON!

1) Включаем MySQL Event Scheduler
SET GLOBAL event_scheduler = 1;

MySQL Event Scheduler


2) Создаем Event-ы
CREATE EVENT antibrut
ON SCHEDULE EVERY 1 HOUR
DO
DELETE FROM _antibrut WHERE logintime < DATE_SUB(NOW(),INTERVAL 1 HOUR)

CREATE EVENT antispam
ON SCHEDULE EVERY 1 HOUR
DO
DELETE FROM _antispam WHERE time < DATE_SUB(NOW(),INTERVAL 1 HOUR)


Дополнительно
Посмотреть Event-ы:
SHOW EVENTS;


Если хотить модифицирывать ваш Event, делать через ALTER, например:
ALTER antibrut 
ON SCHEDULE EVERY 5 HOUR
STARTS TIMESTAMP + 3 HOUR


Удалить Event:
DROP EVENT antispam;
Вверх