Каков наилучший способ работы с консольным приложением, запущенным в фоновом режиме в php? - PullRequest
0 голосов
/ 03 декабря 2010

У меня есть задача написать «php панель управления» на php для работы с консольным приложением linux, игровым сервером. Итак, мне нужно запустить, остановить (без проблем) и работать с консолью приложения - отправлять ей строковые команды и ловить вывод.

Каков наилучший способ сделать это? Я думаю о создании некоторых скриптов / шаблонов .sh и вызываю их с помощью команд php shell_exec - это будет самый простой способ. Но как реализовать работу с консолью - как лучше всего отправлять команды и ловить вывод? Вызовите «fg» перед запуском скрипта и «bg» после? Использовать экраны и переключиться на него?

Каков наилучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 03 декабря 2010

У меня просто сумасшедшая идея.Я могу сделать именованный канал - "mkfifo pipename", а затем работать с ним из shell_exec (например, я могу сделать "echo quit >> pipename".

Проблема в том, что я не могу поймать ответ нав частности, последняя команда, но это было бы слишком круто. На этом этапе проекта мне просто нужно отправить команды на сервер и перехватить вывод консоли. Я подумаю еще немного, но кажется, что использование именованных каналов - самое простое решение.

0 голосов
/ 03 декабря 2010

Лучший способ - запустить «другое приложение» в качестве демона в фоновом режиме и обмениваться данными с ним через сокет (tcp, unix, ..).

Это может быть сделано довольно легко, если вы действительно разрабатываете консольное приложение. Если вы этого не сделаете, а это приложение только для чтения / записи из stdin / stdout, вы можете создать какой-нибудь другой процесс контроллера, который выставит эти два канала ввода / вывода в сокет.

Первой идеей, которую я настаиваю на этом, будет сценарий Python, использующий модуль subprocess для запуска другого процесса в фоновом режиме и последующей связи с ним. Затем заставьте скрипт Python открыть сокет для диалога с приложением PHP (конечно, вы должны быть в состоянии сделать это на вашем любимом языке. Мой - это Python:)).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...