PHP处理多个TCP连接的能力?

时间:2012-09-26 15:31:16

标签: php sockets tcp udp

我想知道PHP是否可以作为TCP端口上的服务器? 1GB RAM服务器可以处理多少个IDLE连接? PHP可以接收到一个TCP端口的多个连接(就像端口80上的apache一样吗?)

如果我有一个客户端连接到PHP打开的套接字,我该如何向其发送数据? (例如a.php正在侦听端口5000,某些客户端已连接,稍后b.php需要向该客户端发送内容,请推送消息?)

或者我应该使用UDP吗?

1 个答案:

答案 0 :(得分:2)

朋友,我的第一个建议是,即使PHP可以本地执行此操作。 PHP不是实现TCP套接字服务器的最佳技术。原因是因为记得php 每个脚本都有max_execution_time并使服务器永远运行需要将此值设置为0,这意味着永远。 1gb ram服务器可以处理的连接数量取决于ram和处理器消耗每个php进程的数量。

但无论如何,如果你决定用php做。是的,您可以使用php构建一个异步tcp套接字服务器。

只需创建一个监听5000的主套接字(例如)。对于与此主套接字连接的每个客户端套接字,然后为每个传入连接创建一个带有随机空闲端口(由os选择)的子套接字,并且您可以在释放主套接字时继续与子套接字通话,以继续侦听另一个传入连接。