Убедитесь, что всегда работает один экземпляр PHP-скрипта Laravel

У меня есть PHP-скрипт, который открывает соединение TCP/IP и теоретически должен работать бесконечно. Но время от времени этот скрипт дает сбой, поэтому я хотел бы убедиться, что у меня постоянно работает один экземпляр этого скрипта, а если нет, запустить новый его экземпляр.

Мой скрипт написан в приложении Laravel, а это значит, что для его работы требуется несколько классов, определенных в моем приложении Laravel. Это мешает мне запустить простой php myscript.php, потому что нет возможности загрузить приложение Laravel и сделать доступными классы, которые мне нужны, если я запускаю скрипт из командной строки.

Это оставляет мне возможность либо создать пользовательскую команду Artisan и запустить через нее логику моего сценария, либо использовать CURL для запуска моего сценария (это позволяет Laravel загружаться, поскольку это HTTP-вызов). Конечная цель по-прежнему состоит в том, чтобы постоянно запускать один экземпляр скрипта.

Если бы я мог запустить сценарий через командную строку, я мог бы выполнить ps aux | grep myscriptname.php, чтобы увидеть, есть ли у меня уже работающий экземпляр сценария, и запустить экземпляр, если его нет. Но если я запускаю скрипт с запросом CURL, скрипт регистрируется как процесс apache/httpd. Та же проблема возникает при запуске через пользовательскую команду Artisan; Я не могу увидеть имя базовой функции выполняемого постоянного метода.

Есть ли здесь другой метод, который позволит мне достичь того, что я хочу сделать?


person Lloyd Banks    schedule 11.05.2016    source источник
comment
Я бы порекомендовал куратора. Подробнее об использовании этого с Laravel здесь: laravel.com/docs/5.2/queues#supervisor- конфигурация   -  person Matt McDonald    schedule 11.05.2016
comment
Да, можно запустить скрипт с инициализированным Laravel. См. Ремесленник. См. мой ответ на другой похожий вопрос: stackoverflow .com/questions/37061770/ В любом случае, Supervisor, вероятно, то, что вам нужно.   -  person Arcesilas    schedule 11.05.2016