我看到类似的问题已被多次询问,但我认为没有任何答案适合我。我正在尝试使用socket_read命令使用php监听我的localhost上的端口并将消息写入服务器。代码工作正常,但我只能读写第一个字符。假设客户端发送“hello”,socket_read
只读取“h”。
$result = socket_read ($client, 1024);
echo "Reply From Server :".$result ."\n";
它几乎看起来像php运行得如此之快以至于只要套接字读取接收到第一个字符,程序就会继续运行下一行。我需要socket_read等到消息结束或消息中看到某些字符,如空格或句号或美元符号或其他任何内容。
到目前为止,我试过了;
在循环中使用套接字读取,因此每次接收到一个字符时,我都可以放入一个数组并最终生成单词“hello”。不工作。当我使用循环时,我会在几秒钟内收到数百个空字符。
阅读PHP手册我试图在标题中使用PHP_NORMAL_READ
。当使用此选项时,socket_read应该继续,直到消息包含\n
或\r
,但它不适用于我的应用程序。
我看到建议使用node.js或websocket,但它们不会工作,这也不是聊天平台。我需要的是在我的网站上运行一个php脚本,当客户端发送信息时,我希望php脚本能够在sql server中记录该消息。
注意:我测试了远程和本地主机连接。没有区别。将消息记录到服务器也没有问题。唯一的问题是使用socket_read
接收单个字符。