php mysql 持久化_PHP - Manual: mysqli 扩展和持久化连接 (官方文档)

mysqli 扩展和持久化连接

从 PHP 5.3 mysqli

扩展开始支持持久化连接。

持久化连接已经在 PDO MYSQL 和 ext/mysql 中提供支持。

持久化连接的目的在于重用客户端到服务器之间的连接,

而不是每次在需要的时候都重新建立一个连接。

由于持久化连接可以将已经建立的连接缓存起来,以备后续的使用,

所以省去了建立新的连接的开销,

因此可以带来性能上的提升。

不像 mysql 扩展,mysqli 没有提供一个特殊的方法用于打开持久化连接。

需要打开一个持久化连接时,你必须在

连接时在主机名前增加p:。

使用持久化连接也会存在一些风险,

因为在缓存中的连接可能处于一种不可预测的状态。

例如,如果客户端未能正常关闭连接,

可能在这个连接上残留了对库表的锁,

那么当这个连接被其他请求重用的时候,这个连接还是处于 有锁的状态。

所以,如果要很好的使用持久化连接,那么要求代码在和数据库进行交互的时候,

确保做好清理工作,保证被缓存的连接是一个干净的,没有残留的状态。

mysqli 扩展的持久化连接提供了内建的清理处理代码。

mysqli

所做的清理工作包括:

回滚处于活动状态的事务

关闭并且删除临时表

对表解锁

重置会话变量

关闭预编译 SQL 语句(在PHP中经常发生)

关闭处理程序

释放通过 GET_LOCK() 获得的锁

这确保了将连接返回到连接池的时候,

它处于一种“干净”的状态,可以被其他客户端进程所使用。

mysqli 扩展

通过自动调用 C-API 函数

mysql_change_user() 来完成这个清理工作。

自动清理的特性有优点也有缺点。

优点是程序员不再需要担心附加的清理代码,

因为它们会自动调用。

然而缺点就是

性能 可能会 慢一点,

因为每次从连接池返回一个连接都需要执行这些清理代码。

这个自动清理的代码可以通过在编译 php 时定义

MYSQLI_NO_CHANGE_USER_ON_PCONNECT

来关闭。

Note:

mysqli 扩展在使用

MySQL Native Driver 或

Mysql Client Library(libmysql)时都支持持久化连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值