解析php中mysql_connect与mysql_pconncet的区别详解


Posted in PHP onMay 15, 2013

说说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脚本的事 还关系到数据库和服务器的设置。

PHP 相关文章推荐
php 各种应用乱码问题的解决方法
May 09 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
一个经典实用的PHP图像处理类分享
Nov 18 PHP
smarty模板引擎中自定义函数的方法
Jan 22 PHP
合格的PHP程序员必备技能
Nov 13 PHP
php防止CC攻击代码 php防止网页频繁刷新
Dec 21 PHP
Yii2中使用asset压缩js,css文件的方法
Nov 24 PHP
Yii2实现增删改查后留在当前页的方法详解
Jan 13 PHP
php表单处理操作
Nov 16 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
Laravel 5.5 实现禁用用户注册示例
Oct 24 PHP
深入php之规范编程命名小结
May 15 #PHP
PHP+jQuery实现自动补全功能源码
May 15 #PHP
深入分析php之面向对象
May 15 #PHP
深入解析php之apc
May 15 #PHP
深入解析php之sphinx
May 15 #PHP
基于php设计模式中单例模式的应用分析
May 15 #PHP
基于php设计模式中工厂模式详细介绍
May 15 #PHP
You might like
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
新闻分类录入、显示系统
2006/10/09 PHP
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
php查看一个变量的占用内存的实例代码
2020/03/29 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
解析瀑布流布局:JS+绝对定位的实现
2013/05/08 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
AngularJS 在同一个界面启动多个ng-app应用模块详解
2016/12/20 Javascript
VUE axios上传图片到七牛的实例代码
2017/07/28 Javascript
vue中使用input[type="file"]实现文件上传功能
2018/09/10 Javascript
layui默认选中table的CheckBox复选框方法
2019/09/19 Javascript
[43:36]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
详解使用Python处理文件目录的相关方法
2015/10/16 Python
Using Django with GAE Python 后台抓取多个网站的页面全文
2016/02/17 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
python实现飞机大战微信小游戏
2020/03/21 Python
python一键去抖音视频水印工具
2018/09/14 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
非常漂亮的CSS3百叶窗焦点图动画
2016/02/24 HTML / CSS
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
HTML5中的Scoped属性使用实例
2014/04/23 HTML / CSS
菲律宾最大的网上花店和礼品店:PhilFlower.com
2018/02/09 全球购物
亚洲领先的设计购物网站:Pinkoi
2020/11/26 全球购物
大学生励志演讲稿
2014/04/25 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
全国法制宣传日活动总结2014
2014/11/01 职场文书
商务邀请函
2015/01/30 职场文书
python实现三阶魔方还原的示例代码
2021/04/28 Python
python flappy bird小游戏分步实现流程
2022/02/15 Python