Skip to content

GXhua/php-connect-pool

This branch is 4 commits ahead of netstao/connect-pool:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

0b7e719 · Dec 12, 2014

History

11 Commits
Dec 11, 2014
Dec 11, 2014
Dec 9, 2014
Nov 28, 2014
Dec 12, 2014
Nov 28, 2014
Dec 12, 2014
Dec 12, 2014
Nov 28, 2014
Dec 11, 2014
Nov 28, 2014
Nov 28, 2014
Dec 11, 2014
Dec 11, 2014
Dec 12, 2014
Nov 28, 2014
Nov 28, 2014

Repository files navigation

redis and pdo sync connect pool, just for PHP

Provide local connection pool like java

Requirement

  • PHP 5.3 +(no zts 编译php时不要加 --enable-maintainer-zts)
  • linux 2.6+
  • pdo and redis extension install

Install

phpize=>./configure=>make install=>echo "extensions=xx/connect_pool.so">php.ini

解决的问题

  • 1.php的短链接对mysql和redis造成了大量的资源消耗。
  • 2.想象一个这样的业务:请求过来连了一次redis,又去连了mysql,之后去调用其他的rpc请求,而某种原因导致请求非常慢,那么之前的tcp连接就会一直占用。
  • 3.现有开源产品(Atlas,TDDL等)需要单独部署集群,在架构上引入了外部依赖,经过中间网络转发效率变低,没法同时支持redis和pdo。

技术特性

  • 1.在model框架里面做集成,每次fetchAll(set/get)后执行release方法,释放所占用的连接,防止因为脚本卡住导致的连接占用过高问题。
  • 2.支持最大最小连接数配置。
  • 3.支持压力小自动回收连接(可配置)。
  • 4.支持平滑重启。
  • 5.减少php短连接对db层的压力。
  • 6.做了大量优化,虽然请求经过连接池进程转发,但是基本无qps损耗。
  • 7.支持连接用光的排队机制。
  • 8.框架简单整合后(修改new 方法),现有业务一行代码都不用改即可用上连接池。

Example

step 1 move the pool.ini file to /etc/ and modify it as you need.

step 2 start the pool_server process:

```support "start" "stop" "restart" "reload"

step 3 modify you php script:
$db = new pdo_connect_pool(xxxx);//dont use persistent $redis = new Redis(); =》$redis = new redis_connect_pool();//dont use pconnect tips:use $db($redis)->release() to release the connection as early as you can; ?>
## 联系我
http://weibo.com/u/2661945152

About

pdo and redis tcp connect proxy

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 95.2%
  • Makefile 4.4%
  • PHP 0.4%