php-mysql扩展的mysql_connect/mysql_pconnect比较
2012-10-24 02:30
344 查看
author: selfimpr
blog: http://blog.csdn.net/lgg201
mail: lgg860911@yahoo.com.cn
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()释放, 也就是在整个进程完成执行时释放 |
相关文章推荐
- php中mysql_connect与mysql_pconnect的区别
- php中mysql_connect与mysql_pconnect的区别
- PHP的mysql_connect与mysql_pconnect
- php的mysql_pconnect() 和 mysql_connect()的区别
- php+mysql中存储过程性能简单比较
- PHP - Manual手册 - Function Reference函数参考 - Database Extensions数据库扩展 - Vendor Specific Database Extensions特定提供商数据库扩展 - MySQL - MyS
- centos php 动态安装pdo_mysql mysql mysqli等扩展
- phpredis connect 与 pconnect
- PHP源码之 ext/mysql扩展部分
- mac:php连接mysql,出现错误: mac PHP Warning: mysql_connect(): [2002] No such file...
- PHP小白遇到的第一个问题Warning: mysql_connect() [function.mysql-connect]
- mysql扩展库和mysqli扩展库的比较
- php编译完成后安装mysql扩展
- nginx error.log 提示 [error] 887#887: *58 FastCGI sent in stderr: "PHP message: PHP Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50556 Library:50637
- 解决linux环境下mysql找不到php的extension-mysql扩展问题
- linux下安装php扩展mysqli.so
- ubuntu16.04编译安装mysql-boost-5.7.21并编译成php扩展测试与使用
- libpuzzle-php扩展比较图片间的相似性
- mac ox 10.11 brew安装Nginx+PHP+MySQL+扩展
- php 无法载入 mysql 扩展 的完美解决方案