作者sunz5010 (FoFo)
看板PHP
标题[请益]MySQL Connection 何时建立比较妥
时间Thu Dec 15 11:44:00 2011
想请问一下
假设我有一个Student的Class
分别有三个function,getStudentInfo, getGradeInfo, getInterestInfo
分别要去资料库拿取、学生基本资讯、学生成绩资讯、学生兴趣资讯
那怎麽样建立MySQL Connecntion比较好
作法A: 在建构子的地方先建立一个Connecntion
之後用到哪个function 就直接使用这个Connecntion
作法B: 呼叫个别function 的时候、在建立Connecntion即可
(别跟我说直接用一个function 把三个table资料一次叫出来就好喔@@)
(这只是举例状况、我就是要去不同table拿取不同东西啦)
我的认知是、作法A好像有个缺点、就是万一这个Student物件的生命周期太长
那他会一直保有Connenction、直到Student物件解构之後才一并clost connection
而作法B我认为的好处是、当有需要拿资料的时候、在去建立connection、拿完就close
这样他就不会一直占据一个connection,不过缺点好像是他会一直去建立connection
对於这个东西、有人有比较好的建议吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.252.43.147
1F:推 mervynW:拨电话, 跟hold住电话 那个耗资源? 12/15 11:46
2F:→ sunz5010:好问题!所以我想知道、拨电话到mysql会很耗资源吗? 12/15 11:50
3F:推 mrbigmouth:建立connection花的时间远远大於做一个query喔 12/15 11:56
4F:→ mrbigmouth:所以才会有pconnect这种做法 12/15 11:56
5F:→ mrbigmouth:但建立恒久连接正像是一直hold电话一样 即使没人用还是 12/15 11:57
6F:→ mrbigmouth:不断的占记忆体占资源...优点是省下拨电话的时间... 12/15 11:58
7F:→ mrbigmouth:我的做法是不用恒久连接,每个网页从开始到书出完毕只建 12/15 11:59
8F:→ mrbigmouth:一个connection...其间所有的query都是共用此连接 12/15 11:59
9F:→ sunz5010:不过您这个作法、是不是有一个问题,如果我调阅成绩资料 12/15 12:06
10F:→ sunz5010:接着我可能要对成绩做运算,但是这时候其实connection还 12/15 12:07
11F:→ sunz5010:在,但这期间其实他都占据了一个connection的位置,这样 12/15 12:07
12F:→ sunz5010:也不妥不是吗?虽然你说你load一个页面只占一个connectio 12/15 12:08
13F:→ sunz5010:但是等於说1000个人同时load你的页面、这期间就已经占据 12/15 12:08
14F:→ sunz5010:1000连线、而必须要等待他们都处理完,才会释放 12/15 12:09
15F:→ sunz5010:这也是我在担心的事情呢 12/15 12:10
16F:推 mervynW:靠腰... 我用成发信了..有没留底稿. 帮我po上来吧 12/15 13:22