каждую минуту cron работа иногда не работает

У меня есть несколько заданий cron, выполняющих сценарии php. Скрипты php иногда выполняют тяжелую работу, например, обновляют сотни записей за раз в таблице mysql.

Проблема в том, что работа должна выполняться каждую минуту. Тем не менее, он случайно пропускает и в результате не выполняется каждую минуту. Иногда он выполняется каждые 4-6 минут, затем возвращается к каждой 1 минуте, пропускает в 2-3 раза больше, а затем снова становится нормальным.

Я на Centos 6,5

Обратите внимание, что php работает правильно, и нет никаких проблем с самими сценариями php, так как во время его запуска я получаю ожидаемые результаты и что одновременно выполняется еще около 10 других похожих сценариев (каждую минуту или каждую 5 минут на остальные сценарии)

Работа, вакансии:

/usr/bin/php "/var/www/html/phpScriptToExecute.php" >> /var/www/html/log/phpScriptLog.log 2>&1

Я полагаю, что это может быть проблемой из-за слишком большого количества одновременных скриптов, одновременно работающих с базой данных.

Последняя информация: нет ошибок в /var/log/cron файл или в phpScriptLog.log файл.

1

Решение

Причиной может быть то, что вашему заданию cron требуется более 1 минуты для выполнения, распечатайте время начала и время окончания в конце скрипта для его проверки.
если задание cron запущено, linux не выполнит его снова.

1

Другие решения

Я предполагаю, что это вызвано фатальной ошибкой PHP, но ваш PHP, вероятно, не настроен на отправку сообщений об ошибках в stderr, поэтому ваш phpScriptLog.log пустой. Вы можете проверить ваш php.ini (или просто использовать ini_set ()) для следующего:

  1. display_errors: установите значение on / true, если вы хотите, чтобы ошибки отображались на stderr
  2. log_errors: установите значение true, если хотите отправить сообщения об ошибках в файл
  3. error_log: укажите файл, в котором вы хотите сохранить ошибки

Или, если вы хотите решение, позволяющее избежать перекрывающихся заданий cron, в SO есть множество вариантов.

0