Назад | Перейти на главную страницу

Использование socat для выполнения php cli

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

Когда соединение с портом установлено, мне нужно запустить скрипт CLI PHP, который обрабатывает данные. Многие удаленные скрипты могут выполняться / подключаться более или менее в одно и то же время, поэтому я думаю, что было бы лучше, если бы socat разветвлял процесс для каждого подключения для запуска скрипта.

Мне нужно сделать сокат большинство из того, что мне нужно, с помощью команды

socat tcp-l:myport,fork exec:mypath/socatTest.php

Я могу прочитать ввод на php: // stdIn. Все хорошо.

Проблема в том, что процесс не похоже на вилку, поэтому, если вторая внешняя программа отправляет данные, а другая делает то же самое, она получает ошибку отказа в соединении.

Где я ошибся?

Не использую socat

почему бы не использовать PHP для прослушивания этого сокета и обработки вашей информации? Если вы проверите socket_accept, ниже вы увидите несколько примеров прослушивания сокета и разветвления этого процесса для нескольких клиентов. здесь также есть еще один пример - пользовательский веб-прокси-это-лучше-разветвлять-процесс-или-делать-http-запросы

Что касается socat

Во-первых, ни в коем случае не работали с socat. так что это полностью основано на просмотре документации. так что из того, что я могу сказать по документации Вот, казалось бы, exec:<command-line> должен развиваться независимо от процесса. похоже, что вам не нужно явно указывать это в параметрах.

Адреса EXEC или SYSTEM вызывают программу, использующую дочерний процесс, и передают данные между socat и программой.

ты заставлял это работать раньше?