使用 socat 执行 php cli

使用 socat 执行 php cli

有多个客户端程序定期连接到我的服务器上的端口并发送一行文本。

当与端口建立连接时,我需要启动一个处理数据的 PHP CLI 脚本。可能有许多远程脚本几乎同时运行/连接,因此我认为最好 socat 为每个连接分叉一个进程来运行脚本。

我已经让 socat 去做了最多我需要的是使用命令

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

我可以在 php://stdIn 上读取输入。一切正常。

问题在于这个过程似乎没有分叉,因此如果第二个外部程序在另一个程序正在执行相同操作时发送数据,则会出现连接被拒绝错误。

我哪里做错了?

答案1

不使用socat

为什么不使用 PHP 来监听该套接字并处理您的信息?如果您签出socket_accept,您将在下面看到一些有关监听套接字并为多个客户端分叉该进程的示例。这里还有另一个示例 -自定义 Web 代理更适合分叉进程或发起 http 请求

关于so​​cat

首先,我从来没有使用过 socat。所以这完全基于对文档的审查。所以从我通过文献得知这里,看起来exec:<command-line>无论如何都应该分叉一个进程。似乎不需要在选项中明确说明。

EXEC 或 SYSTEM 地址使用子进程调用程序并在 socat 和程序之间传输数据。

你以前让这个工作过吗?

相关内容