У меня есть эта хранимая процедура. Как я могу запустить это, например, с интервалом в 5 секунд? Как процедура для удаления данных с отметкой времени старше одного дня?
DROP PROCEDURE IF EXISTS `delete_rows_links`
GO
CREATE PROCEDURE delete_rows_links
BEGIN
DELETE activation_link
FROM activation_link_password_reset
WHERE TIMESTAMPDIFF(DAY, `time`, NOW()) < 1 ;
END
GO
Вы можете использовать планировщик mysql, чтобы запускать его каждые 5 секунд. Вы можете найти образцы на http://dev.mysql.com/doc/refman/5.1/en/create-event.html
Никогда не использовал это, но я надеюсь, что это будет работать:
CREATE EVENT myevent
ON SCHEDULE EVERY 5 SECOND
DO
CALL delete_rows_links();
Я использовал этот запрос, и он работал для меня:
CREATE EVENT `exec`
ON SCHEDULE EVERY 5 SECOND
STARTS '2013-02-10 00:00:00'
ENDS '2015-02-28 00:00:00'
ON COMPLETION NOT PRESERVE ENABLE
DO
call delete_rows_links();
Чтобы создать cronjob, выполните следующие действия:
выполните эту команду: SET GLOBAL event_scheduler = ON;
Если ОШИБКА 1229 (HY000): переменная ‘event_scheduler’ является ГЛОБАЛЬНОЙ
переменная и должна быть установлена с помощью SET GLOBAL:
mportant
Можно установить Планировщик событий на ОТКЛЮЧЕНО только при запуске сервера. Если event_scheduler включен или выключен, вы не можете установить его на DISABLED во время выполнения. Кроме того, если при запуске планировщика событий установлено значение «ОТКЛЮЧЕНО», вы не можете изменить значение event_scheduler во время выполнения.
Чтобы отключить планировщик событий, используйте один из следующих двух методов:
В качестве параметра командной строки при запуске сервера:
--event-scheduler=DISABLED
В файле конфигурации сервера (my.cnf или my.ini в системах Windows):
включите строку, где он будет прочитан сервером (например, в разделе [mysqld]):
event_scheduler=DISABLED
Читать MySQL документация для дополнительной информации.
DROP EVENT IF EXISTS EVENT_NAME;
CREATE EVENT EVENT_NAME
ON SCHEDULE EVERY 10 SECOND/minute/hour
DO
CALL PROCEDURE_NAME();
Если вы открыты для решения вне базы данных: вы можете настроить задание cron, которое запускает скрипт, который сам вызывает процедуру.