搜索
首页php教程php手册mysql_connect与mysql_pconnect的区别详解

在mysql中我们会看到有两种常用的数据库连接模式,一种是长久连接,另一各是页面访问完之后就断了连接,下面我来分别介绍mysql_connect与mysql_pconnect的区别,有需要了解的朋友可参考.

PHP mysql_pconnect

mysql_pconnect() 函数打开一个到 MySQL 服务器的持久连接.

mysql_pconnect() 和 mysql_connect() 非常相似,但有两个主要区别.

1.当连接的时候本函数将先尝试寻找一个在同一个主机上用同样的用户名和密码已经打开的(持久)连接,如果找到,则返回此连接标识而不打开新连接。

2.其次,当脚本执行完毕后到 SQL 服务器的连接不会被关闭,此连接将保持打开以备以后使用(mysql_close() 不会关闭由 mysql_pconnect() 建立的连接)。

语法:mysql_pconnect(server,user,pwd,clientflag)

参数 描述

server 可选。规定要连接的服务器。

可以包括端口号,例如 "hostname:port",或者到本地套接字的路径,例如对于 localhost 的 ":/path/to/socket".

如果 PHP 指令 mysql.default_host 未定义(默认情况),则默认值是 'localhost:3306'.

user 可选,用户名,默认值是服务器进程所有者的用户名.

pwd 可选,密码,默认值是空密码.

clientflag 可选,client_flags 参数可以是以下常量的组合:

•MYSQL_CLIENT_SSL - 使用 SSL 加密

•MYSQL_CLIENT_COMPRESS - 使用压缩协议

•MYSQL_CLIENT_IGNORE_SPACE - 允许函数名后的间隔

•MYSQL_CLIENT_INTERACTIVE - 允许关闭连接之前的交互超时非活动时间

返回值,如果成功,则返回一个 MySQL 持久连接标识符,出错则返回 FALSE.

提示和注释

注释:可选参数 clientflag 自 PHP 4.3.0 版起可用.

提示:要创建一个非持久连接,请使用 mysql_connect() 函数.

例子,代码如下:

<?php 
	$con = mysql_pconnect("localhost","mysql_user","mysql_pwd"); 
	if (!$con) 
	  { 
	  die(&#39;Could not connect: &#39; . mysql_error()); 
	  } 
	 

PHP mysql_connect

mysql_connect() 函数打开非持久的 MySQL 连接.

语法:mysql_connect(server,user,pwd,newlink,clientflag)

参数 描述

server 可选,规定要连接的服务器.

可以包括端口号,例如 "hostname:port",或者到本地套接字的路径,例如对于 localhost 的 ":/path/to/socket"。

如果 PHP 指令 mysql.default_host 未定义(默认情况),则默认值是 'localhost:3306'.

user 可选,用户名,默认值是服务器进程所有者的用户名.

pwd 可选,密码,默认值是空密码.

newlink 可选,如果用同样的参数第二次调用 mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识,参数 new_link 改变此行为并使 mysql_connect() 总是打开新的连接,甚至当 mysql_connect() 曾在前面被用同样的参数调用过.

clientflag 可选。client_flags 参数可以是以下常量的组合:

•MYSQL_CLIENT_SSL - 使用 SSL 加密

•MYSQL_CLIENT_COMPRESS - 使用压缩协议

•MYSQL_CLIENT_IGNORE_SPACE - 允许函数名后的间隔

•MYSQL_CLIENT_INTERACTIVE - 允许关闭连接之前的交互超时非活动时间

返回值:如果成功,则返回一个 MySQL 连接标识,失败则返回 FALSE.

提示和注释

注释:脚本一结束,到服务器的连接就被关闭,除非之前已经明确调用 mysql_close() 关闭了.

提示:要创建一个持久连接,请使用 mysql_pconnect() 函数.

例子,代码如下:

<?php 
	$con = mysql_connect("localhost","mysql_user","mysql_pwd"); 
	if (!$con) 
	  { 
	  die(&#39;Could not connect: &#39; . mysql_error()); 
	  }//开源代码phprm.com 
	// 一些代码... 
	mysql_close($con); 
	 

mysql_connect与mysql_pconnect的区别

这俩函数用法上差不久不多,网上有说应当用pconnect的,pconnect是个好器材,也有视pconnect如洪水猛兽的,果断不让用pconnect的,也有立场模糊不清的,那这个器材到底如何呢?

永远链接并不是说,办事器打开了一个连接,然后所有的人都共享这个链接,永远连接一样是每个客户端来就打开一个连接,有200人接见就有200个连接,其实mysql_pconnect()本身并没有做太多的处理惩罚,它独一做的只是在php运行停止后不主动close掉mysql的连接.

在php经cgi体式格式运行时pconnect和connect是根蒂根基没有区此外,因为cgi体式格式是每一个php接见起一个过程,接见停止掉队程也就停止了,资料也全开释了.

当php以apache模块体式格式运行时,因为apache有应用过程池,一个httpd过程停止后会被放回过程池,这也就使得用pconnect打开的的那个mysql连接资料不被开释,于是有下一个连接恳求时就可以被复用.这就使得在apache并发接见量不大的时辰,因为应用了pconnect,php节俭了反复连接db的时候,使得接见速度加快.

这应当是斗劲好懂得的,然则在apache并发接见量大的时辰,若是应用pconnect,会因为之前的一些httpd过程占用的mysql连接没有close,则可能会因为mysql已经达到最大连接着,使得之后的一些恳求永远得不到满足.若mysql最大连接数设为500,而apache的最大同时接见数设为2000,假设所有接见都邑请求接见db,并且操纵时候会斗劲长,当前500个恳求的httpd都没有停止的时辰,之后的httd过程都是无法连接到mysql的(因已经达到mysql最大连接 数),只有当前500个httpd过程停止或被复用才可以连接获得了mysql.

当db操纵错杂,耗时较长时,因httpd会fork很多并发过程处理惩罚,而先产生的httpd过程不开释db连接,使得后产生的httpd过程无法连上db. 因为如许没有复用其它httpd过程的mysql连接,于是会就产生很多连接超时,在并发接见量不高时,应用pconnect可以简单进步接见速度,但在并发量增大后,是否再应用pconnect就要见地度员的选择了.

就我小我认为,php如今对mysql的连接并没有真正用到连接池,pconnect也只是相当于借了apache的过程池来用,所以在并发接见量大的时辰pconnect并不克不及很好的进步接见db效力.

在实际的应用中,用mysql_pconnect的话,每次刷新和恳求新的页面都斗劲快,而用mysql_connect的话,每次刷新都要从头恳求,当数据库连接斗劲慢的时辰,就能看出差别了。当你的数据库连接斗劲慢,DB操纵不是很错杂,并且你的法度足够自负,不会产存亡锁的时辰,或者你拥有对办事器的把握权,满足以上四个前提中的随便率性两个,那就可以用pconnect.

pconnect不消在脚本里封闭,可以在mysql中设置lifetime,也可以写shell按期扫描,kill掉休眠过长的连接,一句话总结:要用好pconnect,不仅仅是php脚本的事,还关系到数据库和办事器的设置.

本文地址:

转载随意,但请附上文章地址:-)

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境