mysql_connect v/s mysql_pconnect

原文:mysql_connect v/s mysql_pconnect

译文:mysql_connect v/s mysql_pconnect

译者:dwqs

当需要使用PHP连接MySQL数据库的时候,会发现有两种数据库连接函数:mysql_connect()和mysql_pconnect()。

1、mysql_connect()

在脚本开始的时候,mysql_connect()会创建一个新的连接,脚本结束的时候就会关闭连接。脚本每一次执行,它都会创建一个新的连接。

2、mysql_pconnect()

当使用mysql_pconnect()连接数据库时,它首先会判断是否已经存在了数据库连接,如果存在,就会利用先用的资源ID,反之,就会创建一个新的连接。

在创建连接之后,函数返回资源ID(如果有)。当脚本再次调用的时候,它并不会创建新的连接。当然,脚本结束的时候,也不会关闭连接。这称之为持久连接。

但是,使用mysql_pconnect()时,需要对服务器配置做一下微调,譬如限制连接数,超时连接,以及处理空连接等。

3、怎么使用这两个函数

如果你的应用有很大流量,应该使用mysql_pconnect()函数,反之考虑mysql_connect()函数。

如果PHP和MySQL在同一台服务器上或者在本地网络,连接次数是可以忽略的,因为无论在哪种情况之下,持久连接都没有优势可言。

4、使用mysql_pconnect()应该留意的事

一般来说,当你锁定一个表时,连接关闭之后是就自动解锁了。但由于持久连接不关闭,任何你不小心锁定的表仍然会保持锁定的状态,唯一解锁的办法就是等待连接超时或者手动杀死进程。在进行事物处理时也会造成这个问题。

同样,临时表在连接关闭之后也会被删除。但由于持久连接不关闭,临时表就不再是临时表了。如果你完成需求后不删除临时表,它将作为一个新的客户端连接,并且是对于同一个连接。在设置Session变量的时候,会造成同样的问题。

在Apache上使用持久连接的效果并不会很好。当Apache收到客户端的一个请求时,会打开一个新的数据库连接,而不是利用已经存在持久连接去打开数据库,这将导致很多空闲进程、浪费资源,当达到最大连接数时,还是造成未知错误。

原文首发:http://www.ido321.com/1312.html

下一篇:DOM笔记(一):HTMLDocument接口

时间: 2024-08-04 22:24:13

mysql_connect v/s mysql_pconnect的相关文章

PHP MySQL 函数 oa信用盘修复版源码

PHP MySQL 简介MySQL 函数允许您访问 MySQL 数据库服务器.OA信用盘架设q<319.135.503.1>安装为了能够顺利的使用本类函数,必须在编译 PHP 时添加对 MySQL 的支持. 编译时,只要使用 --with-mysql[=DIR] 配置选项即可,其中可选的 [DIR] 指向 MySQL 的安装目录. 虽然本 MySQL 扩展库兼容 MySQL 4.1.0 及其以后版本,但是它不支持这些版本提供的额外功能.要使用这些功能,请使用 MySQLi 扩展库. 如果要同时

MySQL连接问题【mysql_connect和mysql_pconnect区别】

--MySQL连接问题[mysql_connect和mysql_pconnect区别] -----------------------------------------------------------转载 apache模块方式下: 区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.  这就使得在apache并发访问

PHPexcel 导入import 数据到 mysql: mysql 查询数据是否存在, 如果存在返回id, 不存在, 插入返回id. 2) mysql_query , mysql_connect, mysql_select_db, mysql_error, mysql_num_rows,mysql_close

一: 要求: 上面的图表 中的数据插入到 3张表中. 1)t_vide_warehourse 分类表: 此表中包含 一级分类 和二级分类.  二级分类是一级分类的子级. 2)t_video_info   包名表 此表 管理  第一张表.   并且 只有 第二次分类 才可以有 包 名 . 一个二级分类下 可以  有多个包. 3)t_video_file  文件表. 此表 关联 第二张表;   一个  包 下  可以 有多个文件. ----------------------------------

PHP mysql_connect() 函数

定义和用法 mysql_connect() 函数打开非持久的 MySQL 连接. 语法 mysql_connect(server,user,pwd,newlink,clientflag) 参数 描述 server 可选.规定要连接的服务器. 可以包括端口号,例如 "hostname:port",或者到本地套接字的路径,例如对于 localhost 的 ":/path/to/socket". 如果 PHP 指令 mysql.default_host 未定义(默认情况)

centos7 解决 mysql_connect()不支持请检查mysql模块是否正确加载

故障现象:linux 安装discuz 错误提示:mysql_connect() 不支持请检查mysql模块是否正确加载.解决办法:查看/usr/lib/php/modules/ (64位的看/usr/lib64/php/modules/)里面根本没有mysql.so找到centos7安装盘,放入光驱,然后找到CentOS目录下的php-mysql-5.4.16-45.el7.x86_64.rpmphp-pdo-5.4.16-45.el7.x86_64.rpm 二个文件,然后通过FTP上传到服务

解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:

php5个版本,5.2.5.3.5.4.5.5,怕跟不上时代,新的服务器直接上5.5,但是程序出现如下错误:Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in,看意思就很明了,说mysql_connect这个模块将在未来弃用,请你使用mysqli或者PDO来替代. 解决方法1: 禁止PHP报错 d

3. System V IPC

System V IPC包含三种类型的IPC:System V消息队列.System V信号量.System V共享内存区 1. key_t键和ftok函数 三种类型的System V IPC使用key_t值作为名字.头文件<sys/types.h>定义key_t为一个至少32位的整数.函数ftok把一个已存在的路径名和一个整数标识符转换成一个key_t值,称为IPC键 #include <sys/ipc.h> key_t ftok(const char *pathname, in

Price Control V or S in Material Type (Price control in material master )

When is it useful to use the price control V or S in Material Master?  Do I have to follow the SAP standard setting in the material type for the following material types: - ROH (Raw materials) -> moving average price - HALB (Semifinished products) ->

11g v$wait_chains 与 hanganalyze

11g之后,通过v$wait_chains视图诊断数据库hang和Contention 11g之前,通常我们数据库hang住了之后,我们会对数据库做hang analyze来进行分析,在11g之后,我们可以通过一个新的视图v$wait_chains来诊断数据库hang和contention.在11gR1这个版本里面,Oracle通过diag进程实现了一个功能,每隔3秒做一次本地的hang analyze,每隔10秒做一次global的hang analyze.而这些信息会存放在内存里面,Orac