php实现-mysql长连接或连接池的方案

技术文档网 2021-04-19

php可以实现连接池吗?

这个部我网上查了很多资料,各种评论,算是有了一点个人总结看法了。 - 答案是肯定的,但是不优雅。

解答这个问题,首先是需要了解php的运行机制。php是解释型脚本语言,客户端发出http后,到达apache2,
apache调用php解析器,完成解析后,释放内存,是完全释放内存解析脚本过程中产生的所有内存,不管你是全局变量也好,静态变量也好,统统都被释放了,所以一般情况是无法实现内存池的。

但是可以通过第三方插件,即扩展php插件,使php与mysql建立连接后,常驻内存。当再有新的http请求到来时,则可以直接复用内存中的mysql连接。
或者使用php的 mysql库函数 即mysql_pconnect 长链接函数。

所以php要想实现连接,确实不像java那样优雅
  1. 使用mysql_pconnect 函数连接
  2. mysql -> my.cnf修改配置: ``` [mysqld]

interactive_timeout =60 // 交互连接(mysql-client)的过期时间。 wait_timeout =30 // 长连接的过期时间时间。 这个一定要改啊!默认是8个小时。 如果请求量大点,很快连接数就占满了。 max_connections = 100 //最大连接数,可以认为是连接池的大小


3. php.ini 修改:

[MySql] mysql.allow_persistent = On mysql.max_persistent = 99 // 要小于mysql配置的最大连接数 mysql.max_links = 99 ```

相关文章

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50

随机推荐

  1. 如何通过xhprof分析性能

    使用方法 xhprof_enable(); /** ... 要检查的php代码 ... **/ $xhprof_data = xhprof_disable(); // 引入xhprof_lib i

  2. LUMEN API Controller 规范

    1. 第三方依赖库规范 在使用LUMEN实现API接口时,以下库必须需要包含在composer包依赖中,以实现代码编写的一些规范 dingo/api : 实现API接口库 vlucas/phpdo

  3. PHP文件锁

    共享锁(LOCK_SH) 什么时候加共享锁? 当在读取数据的时候同时进行着其他的写操作,这个时候需要对文件加共享锁,否则无论有没有对写操作加写锁都会写入成功,导致数据不一致 当文件获得共享锁时,其他

  4. Hello-Risen-程序

    首先需要说明的是,您下载到的文件包含两部分,其中src中是开发源码,用于对Risen框架本身的开发,risen 目录中是通过源码生成的包含debug和release版本的框架程序,用于您应用程序的开发

  5. PHP自定义类示例(Weixin消息解析类)

    PHP自定义类示例(Weixin消息解析类) /** * Created by Qingger. * User: jsspf * Date: 2017/3/24 * Time: 10:50