IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

PHP 持久连接于并发

PHPor 的Blog 2010-07-18 23:29:44 累计浏览 5,377 次
本机暂存
有这么一种需求:

    一次请求中需要访问相同的mc多次,如果串行来做的话,花费时间很长,如果多次mc连接能同时执行的话,花费时间将接近于一次连接的时间。

    我不行每次请求都重新连接mc,希望使用PHP的长连接机制。

    问题:

    如果使用PHP的长连接,则同一次请求中的多次连接将很难实现,因为第二次pconnect返回的连接不是一条新的连接(不管是pfsockopen、mysql_pconnect 都是如此),所以,我将无法创建多个连接;

    如果不使用长连接,则每次请求连接多次mc也是不小的开销。

    如果真的能通过长连接来实现,则如果某一次请求需要20个连接,但是这种情况很少见,一般可能只有5个,于是我就要因为这一次请求,在一段时间内多维持15个长连接,确实不是一件愿意接受的事情,于是,我可能采用每个请求最多允许5个连接的方式,如果需要20次访问mc,则平均每个连接访问4次,就是说一半来讲,速度是纯串行的5倍

    结论:

    PHP长连接和多次连接是没法和平共处的,要想同时多个到相同host:port的连接,其中最多只能有一个长连接

    相关知识:

    PHP的mysql模块中有一个mysql.max_persistent的配置,就是长连接的最大个数,开始以为到同一个host:port可以有多个长连接,但是怎么也想不通,看了源码才知道,到同一个host:port只能有一个长连接,这里限制的是对不同的host:port产生的长连接

    对于fsockopen打开的长连接是没有明确的个数限制的。   

同分类推荐文章

  1. 等了十年的 Go 链式管道,终于来了:seq 让你像写 Scala 一样写 Go (2026-06-25 18:38:18)
  2. Go 实验特性详解 (2026-06-21 10:05:27)
  3. amd64 微架构级别对 Go 程序性能提升多少? (2026-06-21 09:38:49)

查看更多 后端 文章 →

建议继续学习

  1. 使用gettext来支持PHP的多语言 (累计阅读 39,269)
  2. WordPress插件开发 -- 在插件使用数据库存储数据 (累计阅读 29,164)
  3. Paypal接口详细代码(PHP版,非API接口) (累计阅读 19,408)
  4. 分布式缓存系统 Memcached 入门 (累计阅读 16,244)
  5. 30分钟3300%性能提升――python+memcached网页优化小记 (累计阅读 13,742)
  6. 我的PHP,Python和Ruby之路 (累计阅读 13,147)
  7. include(“./file.php”)和include(“file.php”)区别 (累计阅读 12,789)
  8. 15个最好的免费开源电子商务平台 (累计阅读 12,541)
  9. Redis消息队列的若干实现方式 (累计阅读 12,088)
  10. 到底什么是MVC? (累计阅读 11,865)