关于PHP的数据库(Mysql)连接池

本文讨论了PHP数据库连接池的实现,并分析了其在php-fpm工作模式下的有效性。考虑到php-fpm作为进程管理器,可以将它视作一种连接池实现。

今天在研究Druid连接池实现原理时,突然想到解释型的PHP的数据库连接池机制

发现一篇文章《PHP 数据库连接池实现 》

思路挺不错,用数组的pop()和push()实现了一个简单的连接池创建和回收的工作。


但仔细思考PHP的工作模式后,发现一些问题:

目前PHP的web项目常用web容器+php-fpm的方式构建。php-fpm作为一个php进程管理器,维护了一个php进程池, 在接收到请求后分发给php子进程。 php进程随着web容器启动后,一直存活。对于接收到的请求, 会做请求处理的相关初始化 -> 调用相应的php代码做业务操作 -> 销毁请求上下文。

因此, 每个请求的处理都是全新的Context。所以该文章的实现实际上是没有意义的。

但是,因为每个php进程都可以创建和使用一个数据库连接,且mysqli支持进程间重用数据库连接,估且可以把php-fpm看成数据连接池的一种实现方式。因此,有N个存活的php进程,就可以有<=N的数据库连接等待使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值