看板 PHP 關於我們 聯絡資訊
※ 引述《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
PTTLSboy:請問這樣還有辦法單獨關閉$insert1~3其中一條SQL嗎? 09/18 23:16
LaPass:應該是可以直接關$insert1之類的result,雖然我不常用php, 09/18 23:36
LaPass:但這種從底層實現上去的東西,應該不會差太多。 09/18 23:37
PTTLSboy:嗯嗯,感謝! 看來CLASS該重新設計過 09/18 23:56
gname:考慮 singleton 嗎? 09/19 09:11
MOONRAKER:unbuffered_query就不需要關閉了。就算只是普通的query 09/19 10:51
MOONRAKER:也還可以free_result()。事實上insert的傳回成本也就是 09/19 10:53
MOONRAKER:一個bool而已。我認為這完全是想太多。 09/19 10:54
LaPass:主要是針對SELECT的時候..... 09/19 12:18
LaPass:資料庫會卡在那邊等你要資料..... 09/19 12:18