Была задача: есть база и в нее добавляются логии действий. В таблице есть «дата действия» и само «действие». Нужно было удалять старые логи, старше 3х дней
Можно было решить простым кроном в php исполнении или на другом языке, но есть более изящный метод. Средствами самого mysql, его «кроном». Точнее «действием»
«Действие» запускается по интервалу или в определенную дату. Может быть цикличным или «разовым».
В «действии» можно вставить сам sql код или ссылку на функцию
Для того что бы «действие» заработало, нужно что бы заработал демон расписания (event_scheduler). Проверить это можно по статусу переменной
show variables like 'event_scheduler';
если она отключена, попросите хостинг компанию ее включить. На наших хостинг-серверах она включена. Включить можно командами
---
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
---
Или лучше через конфиг файл /etc/my.cnf
---
[mysqld]
event_scheduler = on
---
Задать интервал
К примеру
---
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
---
Каждый час с текущей даты
Или
---
EVERY 1 DAY
---
Каждый день
Ну и пример самого кода
---
DELIMITER ;;
CREATE EVENT e_delllogs
ON SCHEDULE
EVERY 60 MINUTE
COMMENT 'Удаление старых логов'
DO
BEGIN
delete FROM `user111`.`table` where `ltime`<=CURDATE()-3;
OPTIMIZE TABLE `user111`.` table `;
END;;
---
Удаление
---
DROP EVENT `e_delllogs `;
---
Более легкий способ через phpMyAdmin сделать все тоже самое, без sql кода

Подробнее о синтаксисе можно ознакомится на оф.сайте http://dev.mysql.com/doc/refman/5.7/en/create-event.html