Проверьте, работает ли PHP скрипт

У меня есть script, который слушает jabber-сервер и отвечает соответствующим образом. Хотя он не должен был останавливаться, прошлой ночью это произошло. Теперь я хочу запускать задание cron каждую минуту, чтобы проверить, работает ли script, и запустите его, если нет.

Вопрос в том, как я могу проверить, работает ли какой-либо конкретный script?

Некоторые решения были опубликованы здесь, но все это для Linux, в то время как я ищу решение для Windows. Любые идеи, пожалуйста? Спасибо.

Ответ 1

Быстрое и грязное обходное решение может быть для script для обновления строки в базе данных с столбцом даты, установленным на CURRENT_TIMESTAMP. Попросите cron second script проверить, является ли временная метка этой строки последней.

Ответ 2

Вот что я обычно делаю:

  • создать каталог состояния, например:/data/status/
  • на моем script, проверьте, существует ли файл состояния
    • если он существует, выйдите из script
    • если не существует, продолжите процесс

Однако есть проблема в этом: Что делать, если script умирает и он не удаляет файл состояния?

Вы можете добавить немного сохранения, например:

  • В течение каждой минуты обновляйте файл состояния
  • Для каждого запуска cron проверьте, обновляется ли файл состояния, например: 10 или 30 минут назад (мы можем предположить, что наш cron script умирает), мы можем начать cron script.

Ответ 3

У меня была та же проблема, и я решил с помощью этого кода:

file_put_contents("status.txt","ping");

Я положил его внутри цикла моего script

поэтому, я проверяю последнюю измененную дату файла, чтобы увидеть, активен ли script

чтобы не перегружать HD, вы можете сделать что-то вроде этого:

$i++
if( $i%100 == 0)
    file_put_contents("status.txt","ping");

это напишет файл, когда $i == 100 или 200 или 300 и т.д.

это обходное решение