От Дальнейшее расследование, которое я обнаружил, является точным вопросом о том, как долго выполняются определенные экземпляры задачи. Наиболее успешно выполняется в течение нескольких секунд, но несколько последовательных задач выполняются до часа (затем останавливается менеджером). На этом этапе будет полезна любая информация о жизненном цикле запланированных задач Windows.
У меня есть php-файл, который нужно вызывать каждые 10 минут.
Файл php имеет дело с новыми записями базы данных, которые обновляются при вызове.
Файл выполняется с помощью запланированного вызова задачи в php.exe с аргументом -f (с указанным файлом после)
Задача выполняется должным образом и выполняется без сбоев.
Тем не менее, я заметил две проблемы с момента его первоначального запуска.
первый, У меня есть file_put_contents
в файле журнала, в котором добавлено «Schedule Task ()» плюс текущее время, строка при каждом запуске задачи.
В течение первых нескольких дней это работало нормально, но только в один вечер, когда команда не выполнилась, поскольку файл журнала был заполнен (.txt размером чуть менее 1 ГБ).
Я проверил, и файл журнала читается как:
Schedule Task() 2014-10-10 18:00:00.000
Schedule Task() 2014-10-10 18:00:00.000
Schedule Task() 2014-10-10 18:00:00.000
(repeated for 1000s of lines, but still with milliseconds time incrementing every 500 lines or so)
Где я ожидал, что это будет отображаться как:
Scheduled Task () 2014-10-10 18:00:00.000
Scheduled Task () 2014-10-10 18:10:00.000
Scheduled Task () 2014-10-10 18:20:00.000
Это говорит о том, что процесс застрял на этой строке, поскольку миллисекунды для 500 строк были равны.
Чтобы решить эту проблему, я переместил file_put_contents
строка после оператора IF, чтобы гарантировать, что строка будет записана в файл журнала, только когда новые записи были в базе данных.
Проблема никогда не повторялась.
второй, Однако через 3 недели после первого запланированного задания (сегодня) я замечаю, что история запланированного задания заполнена ошибками с 10-минутным приращением.
Приведен код ошибки «Запуск дубликатов». (Это правильно, так как я установил опцию не запускать экземпляры, если они уже выполняются)
Это говорит о том, что диспетчер запланированных задач выполняет действие несколько раз (несколько процессов).
На данном этапе я не уверен, что это ошибка запланированной задачи или проблема с кодом, из-за которой я неправильно завершаю файл. У кого-нибудь была похожая проблема?
Обновить
Просматривая журналы запланированной задачи amanbager, я вижу, что есть проблема с задачей, выполняющейся более 1 часа (см. Изображение)
Вызов выполняется каждые 10 минут, однако выполнение задачи (красная линия) выполняется неправильно.
Задача ещё не решена.
Других решений пока нет …