php mysql_connect 源码_解析php中mysql_connect与mysql_pconncet的区别详解

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

更新时间:2013年05月15日 17:21:40   作者:

本篇文章是对php中mysql_connect与mysql_pconncet的区别进行了分析介绍,需要的朋友参考下

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

相关文章

1a1b05c64693fbf380aa1344a7812747.png

今天小编就为大家分享一篇laravel-admin自动生成模块,及相关基础配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-10-10

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要介绍了laravel-admin利用ModelTree实现对分类信息的管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01

0ea3c7666119d5615e582f823fb3fad6.png

今天小编就为大家分享一篇laravel请求参数校验方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-10-10

4f96a78db829b1556ff16de21e013c7a.png

这篇文章主要给大家介绍了关于利用PHP如何实现QQ、微信和支付宝三合一收款码的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。2018-02-02

8cc1031babc6aff2319f1c6af8544aa0.png

这篇文章主要介绍了PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例,需要的朋友可以参考下2015-05-05

0c932a99bb7b6f23c937db507070cc7b.png

PHP是一门很好的语言,可以很方便的开发web应用程序,下面介绍一下Ajax+PHP+MySQL登陆示例,感兴趣的小伙伴们可以参考一下2015-11-11

cca732bf65a93ed2ec0ac80c638460fe.png

小偷PHP+Html+缓存...2006-12-12

2d9f31f2af7b675a3d153d2b7f1035a7.png

关键字加亮可以更好的帮助阅读,本篇文章主要PHP实现多关键字加亮功能,具有一定的参考价值,有需要的可以看一下。2016-10-10

b452cee8ec5cd9e58ab98eba17281e59.png

这篇文章主要介绍了Dwz与thinkphp整合下的数据导出到Excel的方法,是结合jQuery与ThinkPHP框架实现的导出Excel技巧,非常具有实用价值,需要的朋友可以参考下2014-12-12

f4838ec7e2d4da28e0b57d4e852dadd4.png

注册功能是很多网站必做的功能,有注册功能就要有短信验证码,本文给大家分享thinkphp实现短信验证注册功能,感兴趣的朋友一起看看吧2016-10-10

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值