Re: [請益] 使用連接資料庫的CLASS,效率會不會較慢

看板PHP作者 (LaPass)時間13年前 (2012/09/18 22:58), 編輯推噓2(208)
留言10則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《PTTLSboy (阿銫)》之銘言: : 目前是使用一個CLASS,專門用來連接資料庫及一些mysql函式 : 1.假設當有一筆資料要新增: (註:db_mysql是我的class) : $test_insert=new db_mysql("insert into ... "); //處理SQL : $test_insert->close(); //關閉連接 : unset($test_insert);//釋放記憶體 覺得用class去管資料庫,不應該是這樣 因為這樣寫,會導致一條SQL就開一條連線 我比較常看到的方法是這樣: $DBLink = new DBLink(); 開啟連線 $insert1 = $DBLink->getSQL("insert into ...."); $insert2 = $DBLink->getSQL("insert into ...."); $insert3 = $DBLink->getSQL("insert into ...."); ...... 一堆SQL操作 $DBLink->close(); 關閉連線 不知道PHP有沒有連接池之類的東西 有的話,處理方式又不一樣了 : 當要做SELECT或是其他的動作又要再來一輪,每一次都宣告一個CLASS : 的記憶體然候做完再釋放 : 2.如果是用function把連接資料庫的程式碼包起來 ($connection= ... 略) : $query="insert to ..."; : $result=mysql_query($query,$connection); : mysql_close($connection); : 這樣直接執行,效率會不會比較高,電腦書上是教這種方法 : --------------------------------------------------------- : 因為目前公司案子是用CLASS連接的寫法,所以一直有此疑問,哪個效率上較好 : 請問各位前輩都是用什麼方法寫的呢? : 感謝看完!! -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.87.167

09/18 23:16, , 1F
請問這樣還有辦法單獨關閉$insert1~3其中一條SQL嗎?
09/18 23:16, 1F

09/18 23:36, , 2F
應該是可以直接關$insert1之類的result,雖然我不常用php,
09/18 23:36, 2F

09/18 23:37, , 3F
但這種從底層實現上去的東西,應該不會差太多。
09/18 23:37, 3F

09/18 23:56, , 4F
嗯嗯,感謝! 看來CLASS該重新設計過
09/18 23:56, 4F

09/19 09:11, , 5F
考慮 singleton 嗎?
09/19 09:11, 5F

09/19 10:51, , 6F
unbuffered_query就不需要關閉了。就算只是普通的query
09/19 10:51, 6F

09/19 10:53, , 7F
也還可以free_result()。事實上insert的傳回成本也就是
09/19 10:53, 7F

09/19 10:54, , 8F
一個bool而已。我認為這完全是想太多。
09/19 10:54, 8F

09/19 12:18, , 9F
主要是針對SELECT的時候.....
09/19 12:18, 9F

09/19 12:18, , 10F
資料庫會卡在那邊等你要資料.....
09/19 12:18, 10F
文章代碼(AID): #1GM8l_Xc (PHP)
文章代碼(AID): #1GM8l_Xc (PHP)