Проверьте, работает ли скрипт php - PullRequest
11 голосов
/ 14 апреля 2010

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

Вопрос в том, как проверить, запущен ли конкретный скрипт?

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

Ответы [ 3 ]

4 голосов
/ 14 апреля 2010

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

0 голосов
/ 14 апреля 2010

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

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

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

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

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

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

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

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

0 голосов
/ 14 апреля 2010

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

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

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

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

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