社区
Framework
帖子详情
百分请教思路:php mysql连接过多
小雨转晴
2010-09-14 10:56:22
mysql_connect()
由于系统的复杂性,对于数据库的连接过多,甚至造成数据库崩溃。
查了好多资料php似乎没有连接池的概念。
那么是否有什么机制可以控制mysql的连接个数、等待、空闲、分配、释放等呢?
高手指点。
...全文
781
54
打赏
收藏
百分请教思路:php mysql连接过多
mysql_connect() 由于系统的复杂性,对于数据库的连接过多,甚至造成数据库崩溃。 查了好多资料php似乎没有连接池的概念。 那么是否有什么机制可以控制mysql的连接个数、等待、空闲、分配、释放等呢? 高手指点。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
(2024最新毕设合集)基于Node.js的贺州市油茶生物多样性管理-54787|可做计算机毕业设计JAVA、
PHP
、爬虫、APP、小程序、C#、C++、python、数据可视化、大数据、文案
该系统通过引入Java语言,基于SpringBoot技术框架,利用
MySQL
关系型数据库作为数据存储媒介来设计与实现,可以提高宠物诊所管理效率和服务质量。
小蔺的米哈游数据分析师之路——
MYSQL
基础查询语句篇
HR:能接受出差吗?汉科软对应届生来说还是很友好的,大家都知道,刚出社会,工作经验不充足,在这工作氛围好,有项目经理带着做项目,还有志同道合的小伙伴,能积累经验,帮助大家适应职场。公司是联想,岗位是Java,学历是本科985,地点是成都,校招薪资是总包20,年终奖是年薪的10%,还要乘两个系数,一个是绩效一个部门,预计是3w,餐补是22/可以,但不推荐,相比其他消息队列欠缺机制List实现消息队列简答,但是确认机制需要我们自己实现,并且最重要的事没有广播机制,不过后来的版本加入了订阅功能,有ch。
最新毕设-Node.js-贺州市油茶生物多样性管理-54787(免费领项目)可做计算机毕业设计JAVA、
PHP
、爬虫、APP、小程序、C#、C++、python、数据可视化、全套文案
该系统通过引入Java语言,基于SpringBoot技术框架,利用
MySQL
关系型数据库作为数据存储媒介来设计与实现,可以提高宠物诊所管理效率和服务质量。
Framework
4,250
社区成员
4,522
社区内容
发帖
与我相关
我的任务
Framework
国内外优秀PHP框架讨论学习
复制链接
扫一扫
分享
社区描述
国内外优秀PHP框架讨论学习
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章