2012-07-25 26 views
1

我熟悉PHP和MYSQLi連接,並閱讀了PHP文檔,包括http://www.php.net/manual/en/mysqli.persistconns.php,但我想知道在MYSQLi中建立和關閉連接的正確方法(性能方面) PHP。使用PHP連接MYSQLi的正確方法

什麼是啓動和關閉mysqli連接的最有效方式?

如果在查詢過程中mysqli連接丟失,正確的方法是什麼?

這裏是我的當前設置:

1. Opening a connection at the beginning of the php page 
    2. Making all the necessary queries through other classes 
    3. Closing the connection at the end of page 

/* 
public exampleQuery ($conn, $p1, $p2) { 
    $stmt = $conn->prepare("SELECT id FROM tbl_name WHERE c1=? AND c2=?"); 
    $stmt->bind_param("ss", $p1, $p2); 
    $stmt->execute(); 
    // etc.. 
} 
*/ 


$mysqli_connection = $connectionClass->connectToMYSQLi(); 
//Execute queries using prepared statements 
$queryClass->exampleQuery($mysqli_connection,$param1, $param2); 
$queryClass->exampleQueryTwo($mysqli_connection,$param1, $param2); 
//etc... 
$connectionClass_>closeMYSQLiConnection($mysqli_connection); 

回答

1

如何PHP處理連接,一旦重新加載頁面或訪問通過同時新用戶?

PHP還將確保您在腳本中使用的某些變量不會由碰巧訪問相同頁面的其他用戶使用。 數據庫連接也是如此。

使用某些憑證(用戶名/密碼)訪問數據庫並不意味着它可以與使用相同憑證的其他人「碰撞」。 即使數據庫全部使用相同的憑據,但同時運行多個連接也是完美的。

但這不應該是您的問題/擔心(作爲功能的最終用戶,作爲開發人員),但歸結爲PHP分叉進程或使用線程安全模塊爲每個請求提供服務。然後,與每個請求關聯的每個進程都會啓動一個新的會話(或者循環一次)到數據庫。

準備的語句:

預處理語句是不錯的。它們爲數據庫提供了使用存儲在數據庫上的執行計劃的機會。當你使用複雜的查詢時,這可以提供一些速度優勢。他們也保護你免受SQL注入。

因此,繼續使用準備好的語句。

如何在代碼中構造它們取決於您。如果您調用某個類的語句,數據庫根本不在意。 如果您使用Java應用程序中相同的預準備語句,它們仍然是預準備語句(如果數據庫支持它們,那就是)。數據庫仍然會爲他們準備一個執行計劃。

所以,你最喜歡的方式(=最清晰/簡潔)。

關於這個問題還有很多話要說,我解釋了一些概念只是部分正確,但我希望這能夠刷新大局。