社区
Framework
帖子详情
百分请教思路:php mysql连接过多
小雨转晴
2010-09-14 10:56:22
mysql_connect()
由于系统的复杂性,对于数据库的连接过多,甚至造成数据库崩溃。
查了好多资料php似乎没有连接池的概念。
那么是否有什么机制可以控制mysql的连接个数、等待、空闲、分配、释放等呢?
高手指点。
...全文
842
54
打赏
收藏
百分请教思路:php mysql连接过多
mysql_connect() 由于系统的复杂性,对于数据库的连接过多,甚至造成数据库崩溃。 查了好多资料php似乎没有连接池的概念。 那么是否有什么机制可以控制mysql的连接个数、等待、空闲、分配、释放等呢? 高手指点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
54 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
小雨转晴
2010-09-20
打赏
举报
回复
如果不是要解决这个问题,我还一直认为在每个方法里面关闭连接是正确的,貌似是受了java的影响。
优化中。。。
小雨转晴
2010-09-19
打赏
举报
回复
php 还可以打打断点????快请指点一下!!我一直是EditPlus
小雨转晴
2010-09-19
打赏
举报
回复
[Quote=引用 46 楼 maquan 的回复:]
引用 45 楼 wind_324 的回复:
为何您说“不指定 new_link 的话,的确每次得到的是同一个连接,而且,对于这种连接使用 mysql_close() 完全是形同虚设”。我不清楚您判断是否为同一个连接的依据是什么,还请指教!
我是用 var_dump($link) 查看的,里面的 resource id 应该能用来分辨出是否同一个“对象”。另外,还可以在 PHP 里设断点单步执……
[/Quote]
如果不指定 new_link 的话,得到连接后,即使调用了 mysql_close(),后面继续使用这个 $link 访问数据库都一切正常
不会吧???我调用my_close()确实返回1啊!那这样说来这个方法不是毫无意义可言?
maquan
2010-09-19
打赏
举报
回复
[Quote=引用 45 楼 wind_324 的回复:]
为何您说“不指定 new_link 的话,的确每次得到的是同一个连接,而且,对于这种连接使用 mysql_close() 完全是形同虚设”。我不清楚您判断是否为同一个连接的依据是什么,还请指教![/Quote]
我是用 var_dump($link) 查看的,里面的 resource id 应该能用来分辨出是否同一个“对象”。另外,还可以在 PHP 里设断点单步执行,同时通过数据库工具从数据库里面查看连接个数,也能判断出来是否产生了“新连接”。
如果不指定 new_link 的话,得到连接后,即使调用了 mysql_close(),后面继续使用这个 $link 访问数据库都一切正常。
■□■□■□■□■□■□■□■
□ □
■ 忍以明志 勤以致远 ■
□ □
■□■□■□■□■□■□■□■
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,
分享
给大家,欢迎
技术交流
:)
小雨转晴
2010-09-19
打赏
举报
回复
[Quote=引用 44 楼 maquan 的回复:]
引用 41 楼 helloyou0 的回复:
这个一定是同一个连接,不要说你有那个global和if,就算没有, php在同样主机和用户的情况下,也会自动用上一个. mysql_connect有第4个参数new_link, 如果设为true,才会创建不同连接
强啊,想不到 mysql_connect 还有这层机关!
刚试了一下,不指定 new_link 的话,的确每次得到的是同一个连接……
[/Quote]
maquan:
我也刚发现这个参数。php手册上说:
“一旦脚本结束,到服务器的连接就会被关闭。除非之前已经调用了 mysql_close() 来关闭它。”
为何您说“
不指定
new_link 的话,的确每次得到的是同一个连接,而且,对于这种连接使用
mysql_close() 完全是形同虚设
”。我不清楚您判断是否为同一个连接的依据是什么,还请指教!
Inpool
2010-09-19
打赏
举报
回复
mysql_close()是不会关闭mysql_pconnnect()打开的连接的。
你这个问题应该在进入循环前把所有的connection关闭,然后再进去,确保同一时刻只打开了一个connection
小雨转晴
2010-09-19
打赏
举报
回复
[Quote=引用 51 楼 maquan 的回复:]
引用 47 楼 wind_324 的回复:
如果不指定 new_link 的话,得到连接后,即使调用了 mysql_close(),后面继续使用这个 $link 访问数据库都一切正常
不会吧???我调用my_close()确实返回1啊!那这样说来这个方法不是毫无意义可言?
我试验的结果是这样的,你也可以试试看。
其实也不难理解,并不是“毫无意义可言”,它只是对于 new_link=f……
[/Quote]
恩 是这个理,我想我找到优化方案了,我回去测试,有好消息通知各位然后回来揭帖。呵呵 感谢大家了
maquan
2010-09-19
打赏
举报
回复
[Quote=引用 47 楼 wind_324 的回复:]
如果不指定 new_link 的话,得到连接后,即使调用了 mysql_close(),后面继续使用这个 $link 访问数据库都一切正常
不会吧???我调用my_close()确实返回1啊!那这样说来这个方法不是毫无意义可言?[/Quote]
我试验的结果是这样的,你也可以试试看。
其实也不难理解,并不是“毫无意义可言”,它只是对于 new_link=false 的情况是这样处理的。既然你使用了 new_link=false,那么得到的连接就不能保证是你新建立的,很可能是别的地方已经建立的,你这里只是拿来“借用”而已,那当然你也不能真的把它关闭掉,因为很可能别的地方还要用它。反正等 request 处理完毕后,总归是会关闭的。
■□■□■□■□■□■□■□■
□ □
■ 忍以明志 勤以致远 ■
□ □
■□■□■□■□■□■□■□■
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,
分享
给大家,欢迎
技术交流
:)
cslgpl
2010-09-19
打赏
举报
回复
慢慢学习,菜鸟也能变老鸟
maquan
2010-09-19
打赏
举报
回复
[Quote=引用 48 楼 wind_324 的回复:]
php 还可以打打断点????快请指点一下!!我一直是EditPlus
[/Quote]
支持 PHP 开发的集成环境很多啊,我喜欢 Eclipse 的,你可以看看这个:
Eclipse for PHP Developers
■□■□■□■□■□■□■□■
□ □
■ 忍以明志 勤以致远 ■
□ □
■□■□■□■□■□■□■□■
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,
分享
给大家,欢迎
技术交流
:)
helloyou0
2010-09-18
打赏
举报
回复
[Quote=引用 42 楼 wind_324 的回复:]
我现在有些不明白 是不是一个理论上php针对一个线程创建一个连接?
( 如果new_link!=true 且是同一个主机和用户 )
当这个线程执行完连接自动关闭?
( 如果没有用pconnect )
如果紧接着还有线程用连接,所new新的还是用的上一个呢?
( 如果用了pconnect )
[/Quote]
..
maquan
2010-09-18
打赏
举报
回复
[Quote=引用 41 楼 helloyou0 的回复:]
这个一定是同一个连接,不要说你有那个global和if,就算没有, php在同样主机和用户的情况下,也会自动用上一个. mysql_connect有第4个参数
new_link
, 如果设为true,才会创建不同连接[/Quote]
强啊,想不到 mysql_connect 还有这层机关!
刚试了一下,不指定 new_link 的话,的确每次得到的是同一个连接,而且,对于这种连接使用 mysql_close() 完全是形同虚设。
这样的话,回顾楼主所遇到的问题,就不应该存在“循环”导致“连接过多”的问题了呀?!(难道楼主最初的程序是 new_link=true 的?)
■□■□■□■□■□■□■□■
□ □
■ 忍以明志 勤以致远 ■
□ □
■□■□■□■□■□■□■□■
基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,
分享
给大家,欢迎
技术交流
:)
helloyou0
2010-09-17
打赏
举报
回复
if(!isset($G_db)||empty($G_db)){
$this->link = mysql_connect ( $this->hostname, $this->dbuser, $this->dbpass );
这个一定是同一个连接,不要说你有那个global和if,就算没有, php在同样主机和用户的情况下,也会自动用上一个. mysql_connect有第4个参数new_link, 如果设为true,才会创建不同连接
小雨转晴
2010-09-17
打赏
举报
回复
我现在有些不明白 是不是一个理论上php针对一个线程创建一个连接?当这个线程执行完连接自动关闭?
如果紧接着还有线程用连接,所new新的还是用的上一个呢?
lheilang
2010-09-16
打赏
举报
回复
看看也是好的,受益匪浅。。
小雨转晴
2010-09-16
打赏
举报
回复
[Quote=引用 26 楼 maquan 的回复:]
引用 25 楼 wind_324 的回复:
我想过这样作,如果这样话,n多的线程都在等上面使用的连接。效率上肯定特别的慢啊。
应该没有你担心的这个问题。
你的“循环”肯定是在一个 request 的处理过程中,而处理一个 request 肯定是在一个线程里完成的(当然更是一个进程),不存在跨线程等待的问题。
你通过改造 class DB 的方式实现的“共用同一个连接”,只能是在“……
[/Quote]
是这个道理,我着手测试中。。敬请期待。。。。呵呵。。。感谢各位呢。
小雨转晴
2010-09-16
打赏
举报
回复
[Quote=引用 30 楼 coolesting 的回复:]
引用 29 楼 wind_324 的回复:
引用 28 楼 helloyou0 的回复:
引用 19 楼 wind_324 的回复:
没有用pconnect 觉得会占用的更多 不被释放
恩 我也在考虑程序优化的问题。逻辑有些复杂 暂时还不是太明白。
但是会不会是mysql本身的问题呢?比如上一个连接没执行完,下一个来了,还没释放呢。。一次类推,越来越多。……
[/Quote]
我打算用global 测试一下 看看效果。如果不行其次还得抠程序,必须看出个端倪来。
如果再没有问题,就是mysql出问题了或是硬件抗不住了
骄傲青蛙
2010-09-16
打赏
举报
回复
[Quote=引用 29 楼 wind_324 的回复:]
引用 28 楼 helloyou0 的回复:
引用 19 楼 wind_324 的回复:
没有用pconnect 觉得会占用的更多 不被释放
恩 我也在考虑程序优化的问题。逻辑有些复杂 暂时还不是太明白。
但是会不会是mysql本身的问题呢?比如上一个连接没执行完,下一个来了,还没释放呢。。一次类推,越来越多。。。。
[/Quote]
有这样的情况, 关键还在于代码怎么写, 其次的配置, 再者就是硬件到达瓶颈了.
小雨转晴
2010-09-16
打赏
举报
回复
[Quote=引用 28 楼 helloyou0 的回复:]
引用 19 楼 wind_324 的回复:
没有用pconnect 觉得会占用的更多 不被释放
使用pconnect是要小心的,很多情况会造成悬挂连接,可以看看手册上的部分(包括下面的注释)
http://php.net/manual/en/function.mysql-pconnect.php
而connect不会有这个问题,考虑到你的问题是连接数过多,所以如……
[/Quote]
恩 我也在考虑程序优化的问题。逻辑有些复杂 暂时还不是太明白。
但是会不会是mysql本身的问题呢?比如上一个连接没执行完,下一个来了,还没释放呢。。一次类推,越来越多。。。。
fxs_2008
2010-09-16
打赏
举报
回复
另外,如果PHP启动一个连接,没有关闭,也没有重新声明新联接,也没重选数据库
则下次查询时会自动用上次的连接
加载更多回复(34)
mysql
获取
百分
比结果_
MySQL
查询结果以
百分
比显示简单实现
MySQL
查询结果以
百分
比显示简单实现找了一些资料,然后我是用到了
MySQL
字符串处理中的两个函数concat()和left()1、CONCAT(str1,str2,...)返回来自于参数连结的字符串。如果任何参数是NULL, 返回NULL。可以有超过2个的参数。一个数字参数被变换为等价的字符串形式。示例复制代码 代码如下:select CONCAT('My', 'S', 'QL');->...
mysql
+from+语句,
php
+
mysql
注射语句构造
php
+
mysql
注射语句构造语句构造好坏直接影响了编程的质量,下面是
百分
网小编精心为大家整理的
php
+
mysql
注射语句构造,希望对大家有帮助,更多内容请关注应届毕业生网!一.前言:版本信息:Ok
php
BBS v1.3 开源版下载地址:http://www.cncode.com/SoftView.asp?SoftID=1800由于
PHP
和
MYSQL
本身得原因,
PHP
+
MYSQL
的.注射要比as...
mysql
攻击语句_攻击方法注射语句构造
php
+
mysql
攻击方法注射语句构造
php
+
mysql
以下是
百分
网小编精心为大家整理的利用
php
+
mysql
注射语句构造的攻击方法,希望对大家有所帮助!更多内容请关注应届毕业生网!一.前言:版本信息:Ok
php
BBS v1.3 开源版下载地址:http://www.cncode.com/SoftView.asp?SoftID=1800由于
PHP
和
MYSQL
本身得原因,
PHP
+
MYSQL
的注射要比asp困难,尤其...
MySQL
存储函数
mysql
按
百分
比查询~~ 这个不难吧,我的
思路
是这样的,你先取出来全部的,然后进行读取,放到一个大数组里面,然后根据你给的
百分
比的数值可以计算出来,第一页和最后一页,数组里面有array_slice的函数,可以按你给的数值读取数据的多少,开始和结束位置,分页就像普通的分页程序一样写就可以了。 希望可以帮到你 更多追...
小程序
mysql
php
测试_
php
结合
mysql
和jquery做简单的投票小程序
首先在数据库中要有张表,字段为id,name(即投票的选项),count(各选项所投票的数量累计)。具体
思路
:当选项被选中时,count+1,count的值作为div的长度显示在html页面中,可以嵌套两个div,外div长度固定,内div的长度设置为
百分
比,这样就可以显示
百分
比了。具体代码如下:HTML页面(包括js):投票//引用jquery//为当做统计条的div设置一下样式.wai{wid...
Framework
4,250
社区成员
4,522
社区内容
发帖
与我相关
我的任务
Framework
国内外优秀PHP框架讨论学习
复制链接
扫一扫
分享
社区描述
国内外优秀PHP框架讨论学习
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章