【问题标题】:PHP capability to handle multiple TCP connections? [closed]PHP 处理多个 TCP 连接的能力? [关闭]
【发布时间】:2012-09-18 06:56:47
【问题描述】:

我想知道 PHP 是否可以通过 TCP 端口充当服务器? 1GB RAM 服务器可以处理多少个 IDLE 连接? PHP 能否接收到一个 TCP 端口的多个连接(就像 apache 在端口 80 上所做的那样?)

如果我有一个客户端连接到 PHP 打开的套接字,我如何向它发送数据? (比如a.php监听5000端口,某个客户端已经连接,稍后b.php需要向那个客户端发送一些东西,那么推送消息?)

或者我应该使用 UDP 代替吗?

【问题讨论】:

  • 可以,但是任何考虑使用 PHP 作为服务器端守护程序的人都不应该!
  • @Alnitak 这仍然取决于具体情况。一般来说,你是对的,但确实有一些情况可以使用 php 解决轻量级任务以保持低要求。
  • @arkascha 我不认为 PHP 解释器是“轻量级的”
  • @Alnitak 我自己没有。我指的是轻量级任务
  • 是的,你们都是对的,但有可能吗?我只想为 PUSH 的工作原理制作一个示例编辑代码,但通过 PHP

标签: php sockets tcp udp


【解决方案1】:

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

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

只需创建一个监听 5000 的主套接字(例如)。对于与此主套接字连接的每个客户端套接字,然后为每个传入连接创建一个具有随机空闲端口(由操作系统选择)的子套接字,您可以开始与子套接字交谈,同时释放主套接字以继续侦听另一个传入连接。

【讨论】:

    猜你喜欢
    • 2012-03-25
    • 1970-01-01
    • 2018-07-02
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2011-11-06
    相关资源
    最近更新 更多