Проверьте, работает ли еще php-скрипт


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

Вопрос в том, как проверить, выполняется ли определенный скрипт?

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

3 11

3 ответа:

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

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

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

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

Вы можете добавить небольшую проверку сохранения следующим образом:

  1. Каждую минуту обновляйте файл состояния
  2. для каждого крона начните, проверьте, если файл состояния последний раз обновлялся, например: 10 или 30 минут назад (мы можем предположить, что наш cron-скрипт умирает), мы можем начать cron-скрипт.

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

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

Я поместил его в цикл моего сценария

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

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

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

Это будет записывать файл, Когда $i = = 100 или 200 или 300 и т. д...

Это обходной путь