2016-12-12 6 views
1

У меня есть следующий скрипт. Скрипты запускаются, но я хочу, чтобы он запускался каждые 5 минут после настенных часов. Это означает, что он должен работать на 5, 10, 15 ... после времени настенных часов с интервалом 5 минут. То, что я могу измерить для результата прогона, - это время от 10 до 30 секунд. Есть ли способ приблизиться к отметке 5 минут ?. Благодарю.mysql Расписание Событие каждые 5 минут

CREATE DEFINER=`root`@`%` 
EVENT `run_event` 
ON SCHEDULE EVERY 5 MINUTE STARTS '2016-04-06 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE 
DO CALL my_procedure 
+0

Имеет ли ваш сервер правильное время? Используется ли NTP для синхронизации времени? – StefanR

+0

Что касается программирования, нет, вы ничего не можете сделать с событием. Упражнения мудры, у вас может быть какая-то извилистая комната. Однако, если время является критическим, что вы отметили, что он находится на расстоянии 10-30 секунд, тогда вам может потребоваться пересмотреть то, что вы используете в качестве планировщика. Когда я вижу события, происходящие каждые 5 минут, я всегда задаю вопрос: нужно ли вообще какое-то событие? – Shadow

+0

Системное время синхронизировано. – AlbertK

ответ

1

Ваша конфигурация кажется правильной. Время событий не чрезвычайно точное, но это разумно точный - достаточно, чтобы он не должен был быть в полуминутке.

Один интересный взлом для устранения неполадок в событии - это выбросить предупреждение изнутри события. Поскольку нет клиента, которому может быть отправлено предупреждение, предупреждение записывается в журнал ошибок MySQL. Это должно работать в MySQL 5.5 и выше:

DELIMITER $$ 

DROP EVENT IF EXISTS run_event $$ 

CREATE DEFINER=`root`@`%` 
EVENT `run_event` 
ON SCHEDULE EVERY 5 MINUTE STARTS '2016-04-06 00:00:00' 
ON COMPLETION NOT PRESERVE ENABLE 
DO 
BEGIN 
    SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'run_event started'; 
    CALL my_procedure; 
    SIGNAL SQLSTATE '01000' SET MESSAGE_TEXT = 'run_event finished'; 
END $$ 

Это было некоторое время, так как я использовал это, но я верю предупреждения будут записаны в журнал ошибок сразу, а не помещаются в буфер, пока событие не будет закончено.

+0

@AlbertK, я полагаю, это помогло вам найти проблему? В чем проблема? –

Смежные вопросы