php mysqli pconnect,php-mysql扩展的mysql_connect/mysql_pconnect比较_PHP教程

本文详细解析了mysql_connect和mysql_pconnect函数的工作原理,包括资源对象管理、哈希值查找、连接限制与分配,以及普通与持久化资源列表的区别。重点介绍了如何根据配置调整连接行为和性能优化技巧。
摘要由CSDN通过智能技术生成

author: selfimpr

blog: http://blog.csdn.net/lgg201

mail: lgg860911@yahoo.com.cn

item

mysql_connect

mysql_pconnect

函数原型

resource mysql_connect($host_port, $user, $passwd, $newlink, $client_flags);

第四个参数$newlink标记是否创建新的资源对象

resource mysql_pconnect($host_port, $user, $passwd, $client_flags);

allow_persistent指令

设置此指令使得两个函数行为均和mysql_connect()一致

连接资源对象获取

对$host_port, $user, $passwd, $client_flags求哈希值

在普通资源列表(EG(regular_list))中查找连接对象(已找到并且没有设置$newlink强制创建新连接)

检查找到的对象是否资源类型

从查找到的对象中读取连接对象

将当前获取的连接对象设置为全局默认连接对象

增加连接对象的引用计数, 设置zval属性返回

对$host_port, $user, $passwd, $client_flags求哈希值

从持久化资源列表(EG(persist_list))中查找连接对象(没有找到)

检查max_links配置指令限制是否到达

检查max_persistent配置指令限制是否到达

分配连接对象(php_mysql_conn)空间

设置连接对象的基础属性

初始化驱动层连接对象(mysqlnd/libmysql两种方式)

设置连接超时时间

发起驱动层的真实连接请求

构造持久化列表元素对象, 将新连接对象设置到元素中

将连接对象更新到持久化列表中

更新(增加)num_persistent/num_links计数

注册资源类型返回值

将当前获取的连接设置为全局默认连接对象

对$host_port, $user, $passwd, $client_flags求哈希值

在普通资源列表(EG(regular_list))中查找连接对象(未找到或设置了$newlink强制创建新连接)

检查max_links配置指令限制

分配连接对象(php_mysql_conn)空间

设置连接对象基础属性

初始化驱动层连接对象(mysqlnd/libmysql)

设置连接超时时间

发起驱动层的真实连接

将连接对象注册为资源类型返回值

将连接对象更新到普通资源列表(EG(regualr_list))中

更新num_links计数

将当前获取的连接对象设置为全局默认连接对象

对$host_port, $user, $passwd, $client_flags求哈希值

从持久化资源列表中查找连接对象(已找到)

检查查找到的持久化资源的类型是否匹配

从持久化资源中读取连接对象

设置连接对象基本属性

检查服务端是否主动关闭

如果服务端主动关闭则进行重连

注册资源类型返回值

将当前获取的连接设置为全局默认连接对象

regular_list Vs. persistent_list

regular_list和persistent_list两者都是HashTable

两者都是执行全局环境executor_globals的成员

两者生命周期不同, regular_list在php_request_shutdown()时被释放, 也就是单个请求处理完成之后释放, 而persistent_list在php_module_shutdown()的时候调用zend_shutdown()释放, 也就是在整个进程完成执行时释放

http://www.bkjia.com/PHPjc/477932.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477932.htmlTechArticleauthor: selfimpr blog: http://blog.csdn.net/lgg201 mail: lgg860911@yahoo.com.cn item mysql_connect mysql_pconnect 函数原型 resource mysql_connect($host_port, $user, $passwd, $n...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值