У меня есть несколько заданий 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
файл.
Причиной может быть то, что вашему заданию cron требуется более 1 минуты для выполнения, распечатайте время начала и время окончания в конце скрипта для его проверки.
если задание cron запущено, linux не выполнит его снова.
Я предполагаю, что это вызвано фатальной ошибкой PHP, но ваш PHP, вероятно, не настроен на отправку сообщений об ошибках в stderr, поэтому ваш phpScriptLog.log пустой. Вы можете проверить ваш php.ini (или просто использовать ini_set ()) для следующего:
Или, если вы хотите решение, позволяющее избежать перекрывающихся заданий cron, в SO есть множество вариантов.