咨询PHP如何做到不用每次打开数据库问题?
时间:2011-09-08
来源:互联网
而是在某个地方取得一个DB的连接句柄就行了,
因为客户端连接也比较多,如何来做到呢?
作者: e_job 发布时间: 2011-09-08
作者: yunprince 发布时间: 2011-09-08
PHP提供了一种内置的数据库缓冲机制,即用mysql_pconnect()代替mysql_connect() 来打开数据库而已。PHP会自动回收被废弃的数据库连接,以供重复使用。在实际应用中,这种持久性数据库连接往往会导致数据库连接的伪泄漏现象:在某个时间,并发的数据库连接过多,超过了MySQL的最大连接数,从而导致新的进程无法连接数据库。但是过一段时间,当并发数减少时,PHP会释放掉一些连接,网站又会恢复正常。
作者: e_job 发布时间: 2011-09-08
作者: kyzy_yy_pm 发布时间: 2011-09-08
mysql_connect()
b.php
include("a.pohp")
mysql_query('select ...');
作者: kyzy_yy_pm 发布时间: 2011-09-08
现在的链接它会自动释放,开销不大的,其实该优化的是你的数据结构SQL...
作者: PhpNewnew 发布时间: 2011-09-08
作者: NET920 发布时间: 2011-09-08
PHP code
mysql_query("set wait_timeout=600"); //600秒之内没有交互则自动断掉连接,这点可以通过show processlist来验证
作者: fenyao 发布时间: 2011-09-08
我理解是同一个进程,用户名,密码下调用就会是找同一个已经连接上的。
作者: e_job 发布时间: 2011-09-08
第二、只要查数据就要对数据库进行操作,不过你也可以写一些缓存文件,这样的的话就可以把一些内容写到本地。
第三、数据库连接和查询是有一个临界点的,不是说查询少量多次的查询内容,或者一次查询大量内容,就可以减少或者增加服务端压力的。而是要取得一个临界值,把握好一个度才是最重要的。
作者: c36657598 发布时间: 2011-09-08
mysql_pconnect() 是针对每个客户端的吗,,不是针对(进程,用户名,密码)的吗?
我理解是同一个进程,用户名,密码下调用就会是找同一个已经连接上的。
同个进程.
作者: PhpNewnew 发布时间: 2011-09-08
Apache+PHP+Mysql_pconnect的工作方式
每当客户端向服务端发送一个连接请求(包括图片,HTML,PHP等),apache将会用一个线程来接受这个请求(换句话说,每一个用户访问,就占用一个线程),如果是请求的是一个PHP文件,且 PHP文件里使用了PConnect,则当前线程会判断当前线程有没有打开过pconnect(每个用户的线程是相互独立的,那么pconnect也就是针对当前用户占用的进程而言的),如果有打开过,则使用原来的mysql connect,如果没有打开过,则新建一个connect,并且,连接断开后,线程仍在运行,而且保持Mysql connect.按这种方式运行一段时间后,完全有可能所有apache的线程都打开过有Pconnect的Php页面,所以,如果apache的 ThreadsPerChild=500的话,则500个线程都找开了mysql连接,并且没有关闭,则就要求,mysql的连接数必须大于或等于 500,如果小于这个值,将会导致PHP页面提示数据库连接失败.
作者: NET920 发布时间: 2011-09-08
作者: NET920 发布时间: 2011-09-08
如果所有的用户连接请求都只占用一个持久链接线程,那打个比方,100万用户访问这一个网站,对数据库进行操作,只占用一个数据库线程??
作者: NET920 发布时间: 2011-09-08
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28