1

我有一个 php 套接字服务器,用于处理来自调制解调器的消息。我想创建一个 php websocket 服务器,每当我收到来自调制解调器的消息时,我都会将其发送到 webclient。我尝试了几天但没有成功。

最好的方法是什么?谢谢

.

这是我想做的方式:

Modem ------> PHP Socket Server ------> Web Clients
                    v
                 database

但如果你有另一种最好的方法,请告诉我。

再次感谢你。

 

 

编辑:这是非阻塞套接字中 socket_read 错误的替代方法:http: //php.net/manual/pt_BR/function.socket-read.php#73509

4

1 回答 1

2

您可以使用非阻塞套接字长轮询技术来做到这一点。

工作流程是这样的。

  1. PHP 使用非阻塞套接字连接到调制解调器。
  2. Web 客户端发送一个长轮询 http 请求,该请求在 5 或 10 分钟后超时。
  3. PHP 将传入的客户端连接设为非阻塞。通过这种方式,PHP 将每个客户端添加到队列中。
  4. PHP 遍历每个客户端和调制解调器,并检查是否可以写入或读取某些内容。
  5. 如果有东西要从调制解调器读取,它会读取并处理。如有必要,将消息写入 Webclient 套接字。
  6. 与第 5 步相同,但从 Web 客户端套接字转到调制解调器套接字。
  7. 做任何额外的工作。
  8. 转到步骤 3。

几个月前我也遇到过类似的情况。我必须在 PHP 中保留网络会话,并且还有另一台服务器连接了 PHP。没能完成。后来我不得不为此转向 Python。

于 2012-12-29T19:13:43.033 回答