TCP套接字连接是否适用于连续套接字打开/关闭

时间:2016-04-12 15:44:44

标签: php sockets tcp

我正在开展一个项目,我需要每5分钟发送一次数据(不多,约300B(+ - 100))。一方面是带有apache2服务器的raspberry pi和另一个用作TCP套接字服务器的PHP脚本。

另一方面,有多个客户端连接到TCP套接字服务器。连接由服务器建立,它们交换数据然后关闭套接字。每个客户端每5分钟发生一次(因此,如果我有100个客户端,则套接字将每分钟打开和关闭20次)。

这是处理此类连接的好方法吗,还是应该以某种方式做到这一点? PHP脚本是否正常?

2 个答案:

答案 0 :(得分:0)

它或者连接每个客户端一次并保持连接活着。使用这些数字,您指定两者都是有效选择,但套接字是一种资源,操作系统无法无限制地分配新资源。因此,它必须重复使用它们,因此这种打开和关闭的方法可以很好地扩展,因为目前未使用的插座可以回收利用。

现在另一方面,如果您的服务器运行apache2的唯一原因是运行仅作为TCP套接字服务器的PHP脚本,那么我说这不是最好的方法。你可以使用WebSockets(仍然使用PHP)并通过CLI运行php而不需要运行apache2。

答案 1 :(得分:0)

因此,如果我读得正确,那么您的远程客户端将打开与在Rasberry Pi 2上运行的Apache HTTP Server上托管的PHP应用程序的TCP连接。 客户端将每隔5分钟连接到服务器并发送大约300字节(+/- 100字节)的数据。 所以,这是每5秒打开一次的TCP连接。对于Raspberry Pi来说,这不算什么,除非它需要大量的CPU来处理你得到的300字节。

我不建议尝试保持网络连接活动5分钟(使用TCP保持活动和/或HTTP保持活动和/或使用网络套接字)因为负载太低,你会投入更多试图保持100个连接存活的系统,而不是让它们每5分钟重新连接一次。