Как создать мгновенно самоперезапускающийся скрипт php?

Для запуска скрипта в консоле debian ввожу
php /some_path/some_file.php
Скрипт отрабатывает какое-то время, и завершается, возможно завершение в результате какой-то ошибки (например, потеряно соединение с базой данной, или еще какие). Как сделать, чтобы он тут же перезапустился? И чтобы в единицу времени не было одновременно двух работающих скриптов /some_path/some_file.php? Может это можно сделать с помощью каких либо консольных команд debian?
  • Вопрос задан
  • 182 просмотра
Решения вопроса 1
rozhnev
@rozhnev
Fullstack programmer, DBA, медленно, дорого
Я бы посоветовал использовать специализированный менеджер процессов. Например supervisor
Инструкция на русском
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@rPman
while(true);do php some.php;sleep 1;done
sleep 1 это чтобы между запусками была пауза, можешь убрать но если ошибка будет возникать сразу при запуске, такой скрипт будет жрать ресурсы просто так, что иногда выходит в копеечку в облачных хостингах с оплатой за ресурсы.

не забудь отметить ошибку в логе чтобы реагировать на них
Ответ написан
ky0
@ky0
Миллиардер, филантроп, патологический лгун
На самом деле, правильный вопрос - "зачем создавать самоперезапускающийся скрипт на РНР".

РНР же создан, чтобы умирать.
Ответ написан
Я делал на PHP демоны, которые месяцами работали, но изначально да, были проблемы, у меня к примеру очередь мониторил скрипт и как только ловил входящее сообщение - начинал обрабатывать, срабатывал таймаут в mysql, пришлось написать функцию для проверки соединения и если его нет то реконектиться, эта функция только в начале одной обработки запускалась...
Еще всякие вещи типа бесконечных циклов, хотя бы на 500 мс нужно делать задержки...

А вообще на bash можно запилить скрипт, который грепает PID в выхлопе ps -aux и если нет такого процесса, то запускать, а при первом запуске сохранять в файлик какой-то типа > script.pid...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы