@kopytse

Как реализовать автоматический перезапуск консольного PHP-скрипта при его остановке?

Суть проблемы такова: имеется PHP-скрипт без лимита времени выполнения, запускаемый один раз и выполняющий в цикле запросы к стороннему сайту, с последующей записью в базу данных. Во избежание тайм-аута соединения с базой данных соединение с нею открывается строго в начале каждой итерации цикла и закрывается в конце оной. Так вот, иногда скрипт может так работать в фоновом режиме десять минут, может - час; но рано или поздно его работа самопроизвольно останавливается, и приходится запускать его заново. Отладка ничего особенного не показывает.
Возможно ли каким-либо способом автоматизированно проверять с помощью "ps aux | grep php" работу циклического PHP-скрипта и в случае его исчезновения из вывода результатов данной команды автоматически перезапускать его?
  • Вопрос задан
  • 401 просмотр
Пригласить эксперта
Ответы на вопрос 4
@BorisKorobkov Куратор тега PHP
Web developer
В cron:
* * * * * flock 3 /tmp/myscript.pid php ~/myscript.php
Ответ написан
Комментировать
skobkin
@skobkin
Гентушник, разработчик на PHP и Symfony.
Ответ написан
Комментировать
kotomyava
@kotomyava
Системный администратор
Можно писать pid процесса при старте скрипта в файл с заданным названием, и дальше, например по крону регулярно его запускать, открывать файл проверять есть-ли процесс с таким pid(ls -l /proc/$PID/exe или ps -p $PID), если есть, выходить, если нет, или нет файла, писать pid в файл и запускать обработку, при выходе удалять файл.
Ответ написан
Ваш ответ на вопрос

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

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