技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> PHP --> PHP 持久连接于并发

PHP 持久连接于并发

浏览:4340次  出处信息
有这么一种需求:

    一次请求中需要访问相同的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. 一种常见的并发编程场景的处理    (阅读:22628)
  2. Rolling cURL: PHP并发最佳实践    (阅读:10358)
  3. 查看 Apache并发请求数及其TCP连接状态    (阅读:8501)
  4. 大型高并发高负载网站的系统架构分析    (阅读:7737)
  5. 大并发下的高性能编程 – 改进的(用户态)自旋锁    (阅读:7174)
  6. 并发编程系列之一:锁的意义    (阅读:5919)
  7. 并发框架Disruptor译文    (阅读:5130)
  8. 学习:一个并发的Cache    (阅读:4995)
  9. C++多进程并发框架    (阅读:4771)
  10. Squid 限制用户并发连接数    (阅读:3961)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1