Mysqli学习

mysqli扩展用来访问MySQL 4.1或更高版本提供的功能。关于mysql,详情看www.mysql.com

mysqli扩展和持久连接

持久连接支持是在PHP 5.3的mysqli扩展中被介绍的。对持久连接的支持已经表现在PDO MySQL和ext/mysql里。持久连接背后的想法是,一个客户端进程可以重复使用一个 在客户端进程和数据库之间的连接,而不是重复的被创建和销毁。这样可以减少创建新连接的消耗,因为未被使用的连接被缓存,并准备被使用。

与mysql扩展不同,mysqli不提供单独的的函数去打开持久连接。为了打开一个持久连接,你必须在连接参数hostname前面加 p: 。

持久连接的问题在于,他们可以被客户端置于一个不可预料的状态。比如,一个table lock可能被激活,接着连接意外的结束了。一个新的客户端进程重用这个持久连接,将得到同样的情况(指得到这个连接的时候,table lock就处于激活状态)。新客户端进程需要完成所有清理工作,在正常使用这个持久连接之前,这样会加重程序员的负担。

mysqli扩展的持久连接提供了内置的清理控制代码(cleanup handling code)。mysqli执行以下清理动作:

1.Rollback active transactions(活动回滚激事务)

2.Close and drop temporary tables(关闭和取消临时表)

3.Unlock table(解锁表)

4.Reset session variables(重置会话变量)

5.Close prepared statements(always happen with PHP) (关闭prepared语句,经常发生在PHP中)

6.Close handler(关闭处理程序)

7.Release lock acquired with GET_LOCK() (释放通过GET_LOCK()获得的锁)

这确保持久连接在从连接池获得的时候是clean状态(初始状态clean)

mysqli扩展自动做这个清理工作,通过调用C-API函数mysql_change_user()

自动清理特性有好处也有坏处。好处是程序员不用担心自己写清理代码,因为mysqli会自动调用。但是,坏处是哪些代码可能有点慢,因为这段清理代码每次都要运行,当从连接吃返回一个连接时。

可以在编译PHP时加上MYSQLI_NO_CHANGE_USER_ON_PCONNECT来关掉自动清理代码。

note:mysqli扩展支持持久连接,通过mysql native driver或者mysql client library。


预定义常量,编译选项,参照:http://www.php.net/manual/en/mysqli.constants.php


这里有几个类:

MySQLi,表示一个PHP和Mysql之间的连接,详情:http://www.php.net/manual/en/class.mysqli.php 

MySQLi_STMT,表示一个prepared语句,详情:http://www.php.net/manual/en/class.mysqli-stmt.php

MySQLi_Result,表示一个从数据库查询获得的结果集,详情:http://www.php.net/manual/en/class.mysqli-result.php

MySQLi_Driver,mysqli驱动,详情:http://www.php.net/manual/en/class.mysqli-driver.php

MySQLi_Warning,表示一个mysql警告,详情:http://www.php.net/manual/en/class.mysqli-warning.php


最后有一些弃用的函数:http://www.php.net/manual/en/ref.mysqli.php

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值