欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 今天我们来探讨一下php-mysql扩展的mysql_connect/mysql_pconnect比较 item mysql_connect mysql_pconnect 函数原型 resource mysql_connect($host_port, $user, $passwd, $newlink, $client_flags);
欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入
今天我们来探讨一下php-mysql扩展的mysql_connect/mysql_pconnect比较
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() 释放 , 也就是在整个进程完成执行时释放
查看更多关于php-mysql扩展的mysql的详细内容...