У меня есть PHP-скрипт, который открывает соединение TCP/IP и теоретически должен работать бесконечно. Но время от времени этот скрипт дает сбой, поэтому я хотел бы убедиться, что у меня постоянно работает один экземпляр этого скрипта, а если нет, запустить новый его экземпляр.
Мой скрипт написан в приложении Laravel, а это значит, что для его работы требуется несколько классов, определенных в моем приложении Laravel. Это мешает мне запустить простой php myscript.php
, потому что нет возможности загрузить приложение Laravel и сделать доступными классы, которые мне нужны, если я запускаю скрипт из командной строки.
Это оставляет мне возможность либо создать пользовательскую команду Artisan и запустить через нее логику моего сценария, либо использовать CURL для запуска моего сценария (это позволяет Laravel загружаться, поскольку это HTTP-вызов). Конечная цель по-прежнему состоит в том, чтобы постоянно запускать один экземпляр скрипта.
Если бы я мог запустить сценарий через командную строку, я мог бы выполнить ps aux | grep myscriptname.php
, чтобы увидеть, есть ли у меня уже работающий экземпляр сценария, и запустить экземпляр, если его нет. Но если я запускаю скрипт с запросом CURL, скрипт регистрируется как процесс apache/httpd. Та же проблема возникает при запуске через пользовательскую команду Artisan; Я не могу увидеть имя базовой функции выполняемого постоянного метода.
Есть ли здесь другой метод, который позволит мне достичь того, что я хочу сделать?