社区
Framework
帖子详情
百分请教思路:php mysql连接过多
小雨转晴
2010-09-14 10:56:22
mysql_connect()
由于系统的复杂性,对于数据库的连接过多,甚至造成数据库崩溃。
查了好多资料php似乎没有连接池的概念。
那么是否有什么机制可以控制mysql的连接个数、等待、空闲、分配、释放等呢?
高手指点。
...全文
749
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
哪年计算机二级考试_2016年计算机二级考试
MySQL
试题
2016年计算机二级考试
MySQL
试题以下是
百分
网小编为大家整理的计算机二级数据库的考试试题及其答案,希望能给大家带来帮助!1[简答题] 请使用
PHP
语言和
MySQL
数据库编写一个博客管理系统。参考解析:可参照第15章中介绍的开发实例进行编写。2[简答题]查看所有数据库参考解析:show databases;3[简答题]请编写一段
PHP
程序,要求可通过该程序实现向数据库db_test的表conte...
基于Sphinx+
MySQL
的千万级数据全文检索(搜索引擎)架构设计
[文章作者:张宴 本文版本:v1.0 最后修改:2008.07.27 转载请注明原文链接:http://blog.s135.com/read.
php
/360.htm] 前言:本文阐述的是一款经过生产环境检验的千万级数据全文检索(搜索引擎)架构。本文只列出前几章的内容节选,不提供全文内容。 在DELL PowerEdge 6850服务器(四颗64 位Inter Xeon MP 7110N
SUN Solaris 问题小结
SUN服务器可能遇到的问题总结(一) 1) Q:现在遇到这样一个问题,telnet一台SUN机时报下面的错误: No utmpx entry. You must exec "login" from the lowest level "shell". 我做了下面的处理后: cd /var/adm mv utmpx utmpxbak touch utmpx telnet 恢复了正常,可在该机...
小蔺的米哈游数据分析师之路——
MYSQL
基础查询语句篇
HR:能接受出差吗?汉科软对应届生来说还是很友好的,大家都知道,刚出社会,工作经验不充足,在这工作氛围好,有项目经理带着做项目,还有志同道合的小伙伴,能积累经验,帮助大家适应职场。公司是联想,岗位是Java,学历是本科985,地点是成都,校招薪资是总包20,年终奖是年薪的10%,还要乘两个系数,一个是绩效一个部门,预计是3w,餐补是22/可以,但不推荐,相比其他消息队列欠缺机制List实现消息队列简答,但是确认机制需要我们自己实现,并且最重要的事没有广播机制,不过后来的版本加入了订阅功能,有ch。
WEB开发文档2 总结
http://blog.donews.com/lvjiyong/archive/2006/06/29/931071.aspx 怎样将后台生成的在内存中的图象显示到客户端 Microsoft IE WebControls下载地址 如何在DATAGRID中使用JAVASCRIPT脚本控制 DataGrid中
连接
到下一页显示数据 下载中文名
Framework
4,251
社区成员
4,524
社区内容
发帖
与我相关
我的任务
Framework
国内外优秀PHP框架讨论学习
复制链接
扫一扫
分享
社区描述
国内外优秀PHP框架讨论学习
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章