入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2017-01-19 投稿人: 浏览次数:3297

今天在研究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的数据库连接等待使用。

声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。