[請益]MySQL Connection 何時建立比較妥

看板PHP作者 (FoFo)時間14年前 (2011/12/15 11:44), 編輯推噓3(3013)
留言16則, 3人參與, 最新討論串1/3 (看更多)
想請問一下 假設我有一個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

12/15 11:46, , 1F
撥電話, 跟hold住電話 那個耗資源?
12/15 11:46, 1F

12/15 11:50, , 2F
好問題!所以我想知道、撥電話到mysql會很耗資源嗎?
12/15 11:50, 2F

12/15 11:56, , 3F
建立connection花的時間遠遠大於做一個query喔
12/15 11:56, 3F

12/15 11:56, , 4F
所以才會有pconnect這種做法
12/15 11:56, 4F

12/15 11:57, , 5F
但建立恆久連接正像是一直hold電話一樣 即使沒人用還是
12/15 11:57, 5F

12/15 11:58, , 6F
不斷的佔記憶體佔資源...優點是省下撥電話的時間...
12/15 11:58, 6F

12/15 11:59, , 7F
我的做法是不用恆久連接,每個網頁從開始到書出完畢只建
12/15 11:59, 7F

12/15 11:59, , 8F
一個connection...其間所有的query都是共用此連接
12/15 11:59, 8F

12/15 12:06, , 9F
不過您這個作法、是不是有一個問題,如果我調閱成績資料
12/15 12:06, 9F

12/15 12:07, , 10F
接著我可能要對成績做運算,但是這時候其實connection還
12/15 12:07, 10F

12/15 12:07, , 11F
在,但這期間其實他都佔據了一個connection的位置,這樣
12/15 12:07, 11F

12/15 12:08, , 12F
也不妥不是嗎?雖然你說你load一個頁面只占一個connectio
12/15 12:08, 12F

12/15 12:08, , 13F
但是等於說1000個人同時load你的頁面、這期間就已經佔據
12/15 12:08, 13F

12/15 12:09, , 14F
1000連線、而必須要等待他們都處理完,才會釋放
12/15 12:09, 14F

12/15 12:10, , 15F
這也是我在擔心的事情呢
12/15 12:10, 15F

12/15 13:22, , 16F
靠腰... 我用成發信了..有沒留底稿. 幫我po上來吧
12/15 13:22, 16F
文章代碼(AID): #1EwMq3gQ (PHP)
文章代碼(AID): #1EwMq3gQ (PHP)