Планирование заданий Cron без встречных частот
Если у меня есть несколько запущенных заданий cron:
- Каждую минуту
- Каждые 5 минут
- Каждые 15 минут
- Каждый час
- В полночь
Тогда ровно в 00:00 у меня одновременно работает 5 заданий.
Я хочу добавить еще одну работу, которую мне просто нужно запускать "раз в день" - независимо от того, когда! На самом деле, я хочу, чтобы "когда" было в течение наименьшего времени загрузки сервера.
Как я могу это сделать?
1 ответ
Один из способов сделать это заключается в следующем:
- вызывайте нужный сценарий один раз в час.
- При первом запуске скрипта проверьте наличие временного файла
.runTime
, - Если такой файл существует
- Разберите его и получите из него время 24-часового формата.
- Если текущий час равен проанализированному времени
- Удалить
.runTime
файл и выполнить намеченный сценарий
- Удалить
- Если это другой час - отменить выполнение
- Если такого файла нет и час равен 0 (полночь)
- вычислить случайный час от 0 до 23 и записать его в файл