我一直在使用PHP和MySQL開發一個小型項目。我已經閱讀了很多關於管理連接等方面的最佳實踐。PHP單例數據庫連接模式
我也實現了(在發現周圍的一些帖子後)一個單例類來管理MySQL連接。
require_once 'config.inc.php';
class DbConn {
private static $instance;
private $dbConn;
private function __construct() {}
/**
*
* @return DbConn
*/
private static function getInstance(){
if (self::$instance == null){
$className = __CLASS__;
self::$instance = new $className;
}
return self::$instance;
}
/**
*
* @return DbConn
*/
private static function initConnection(){
$db = self::getInstance();
$connConf = getConfigData();
$db->dbConn = new mysqli($connConf['db_host'], $connConf['db_user'], $connConf['db_pwd'],$connConf['db_name']);
$db->dbConn->set_charset('utf8');
return $db;
}
/**
* @return mysqli
*/
public static function getDbConn() {
try {
$db = self::initConnection();
return $db->dbConn;
} catch (Exception $ex) {
echo "I was unable to open a connection to the database. " . $ex->getMessage();
return null;
}
}
}
但是...如果我的網站有一個像10K的遊客同時和我打電話,每次我單身的對象,我應該期待有性能問題?我的意思是,我不應該有一種連接而不是一個單身人士嗎?
什麼是矛盾?您可以將連接設置爲持久,並使用單例。這個模型被用來使得一個請求不會連接兩次到數據庫,但是兩個不同的客戶端會運行你的腳本的兩個不同的實例,所以會使用兩個不同的連接 – mishu
@mishu當然。我多麼愚蠢。謝謝! – LucasM
@mishu:謝謝你解釋它。我們很多人都沒有考慮過這個問題。 – kta