作者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