Проверьте, работает ли еще php-скрипт
У меня есть скрипт, который слушает сервер jabber и отвечает соответствующим образом. Хотя это не должно было прекратиться, прошлой ночью это произошло. Теперь я хочу запускать задание cron каждую минуту, чтобы проверить, работает ли скрипт, и запустить его, если нет.
Вопрос в том, как проверить, выполняется ли определенный скрипт?
Некоторые решения были опубликованы здесь, но это все для Linux, в то время как я ищу решение для Windows. Есть идеи, пожалуйста? Спасибо.
3 ответа:
Быстрый и грязный обходной путь может заключаться в обновлении скриптом строки в базе данных со столбцом даты, установленным в CURRENT_TIMESTAMP. Пусть cron second script проверит, является ли метка времени этой строки недавней.
Вот что я обычно делаю:
- создайте каталог состояния, например: / data / status /
- в моем скрипте, пусть он проверяет, существует ли файл состояния
- если он существует, выйдите из сценария
- если не существует, продолжайте процесс
Однако в этом есть проблема: что делать, если скрипт умирает и он не удалил файл состояния?
Вы можете добавить небольшую проверку сохранения следующим образом:
- Каждую минуту обновляйте файл состояния
- для каждого крона начните, проверьте, если файл состояния последний раз обновлялся, например: 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 и т. д...
Это обходной путь