2012-09-26 88 views
0

我想知道PHP是否可以通过TCP端口充当服务器? 1GB RAM服务器可以处理多少个IDLE连接? PHP可以接收多个连接到一个TCP端口(如Apache在端口80上的连接吗?)PHP能够处理多个TCP连接?

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

或者我应该使用UDP吗?

+2

它可以,但任何人考虑使用PHP作为服务器端守护进程,不应该! – Alnitak

+0

@Alnitak这仍然取决于情况。作为一般规则,你是对的,但确实有些情况下可以使用php解决轻量级任务以保持低要求。 – arkascha

+0

@arkascha我不认为PHP解释器是“轻量级的” – Alnitak

回答

2

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

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

只需创建一个监听5000的主套接字(例如)。对于与这个主插座连接的每个客户端插座,然后为每个传入连接创建一个随机空闲端口(由OS选择)的子插座,并且您可以在释放主控制器的同时开始与子插座交谈,以继续侦听另一个传入连接。