На рынке хостинг услуг с 2005 года

нам доверяют более 700 сайта
сервера на территории Казахстана
+7 701 3528510 (whatsapp)
litoshenko_oleg@mail.ru

ПОЛЕЗНЫЕ СТАТЬИ - Cron средствами mysql

Была задача: есть база и в нее добавляются логии действий. В таблице есть «дата действия» и само «действие». Нужно было удалять старые логи, старше 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

Copyright © 2004-2023 ТОО "LiO Programs",
Все права защищены.
email: support@hosthouse.kz, litoshenko_oleg@mail.ru (m-agent)
сотовый: +7 701 3528510 (whatsapp)
Дизайн и разработка
ТОО "LiO Programs" 2004-2023г