有多个客户端程序定期连接到我的服务器上的一个端口,并发送一行文本。
当连接到端口时,我需要启动一个处理数据的PHP CLI脚本。 可能有很多远程脚本在同一时间运行/连接,所以我认为最好是socat为每个连接分配一个进程来运行脚本。
我已经得到了社会大部分我所需要的,使用命令
socat tcp-l:myport,fork exec:mypath/socatTest.php
我可以读取php:// stdIn中的input。 一切都很好。
问题是进程似乎没有分叉 ,所以如果第二个外部程序发送数据,而另一个正在做同样的事情,它会得到一个连接拒绝错误。
我哪里错了?
不使用socat
为什么不使用PHP来侦听该套接字并处理您的信息? 如果您检出socket_accept ,您将在下面看到一些示例,其中包括侦听套接字并为多个客户端分配该进程。 在这里还有另外一个例子 – custom-web-proxy-is-better-to-fork-process-or-make-http-requests
关于socat
首先,绝不是与socat合作。 所以这完全基于对文档的审查。 所以从我可以告诉文档在这里 ,它会出现exec:<command-line>应分叉进程无论。 似乎没有必要在选项中明确地说出来。
EXEC或SYSTEM地址使用subprocess调用程序并在socat和程序之间传输数据。
你有没有得到这个工作?