欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

mysql單例連接

MySQL是一款常用的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有開(kāi)源、高效、可擴(kuò)展等優(yōu)點(diǎn)。在MySQL連接過(guò)程中,單例模式是很常見(jiàn)的設(shè)計(jì)模式之一。下面我們來(lái)了解一下什么是MySQL單例連接。

//數(shù)據(jù)庫(kù)連接類(lèi)
class Db{
private static $_instance = null;
private static $_conn = null;
private function __construct(){
$config = [
'host'     =>'127.0.0.1',
'port'     =>'3306',
'username' =>'root',
'password' =>'123456',
'dbname'   =>'test',
];
$dsn = sprintf('mysql:host=%s;port=%s;dbname=%s;charset=utf8',
$config['host'],
$config['port'],
$config['dbname']);
try{
self::$_conn = new PDO($dsn, $config['username'], $config['password']);
}catch(PDOException $e){
die('Connection failed:'. $e->getMessage());
}
}
public static function getInstance(){
if(!self::$_instance){
self::$_instance = new self;
}
return self::$_instance;
}
public function getConn(){
return self::$_conn;
}
}
$db1 = Db::getInstance();
$db2 = Db::getInstance();
if($db1->getConn() === $db2->getConn()){
echo '同一個(gè)連接';
}else{
echo '不是同一個(gè)連接';
}

在上述代碼中,實(shí)現(xiàn)了一個(gè)數(shù)據(jù)庫(kù)連接類(lèi)Db,在構(gòu)造函數(shù)中通過(guò)PDO實(shí)例化連接。getInstance方法返回一個(gè)單例對(duì)象實(shí)例,并且判斷當(dāng)前實(shí)例是否存在,如果不存在則新建一個(gè)實(shí)例,如果存在則返回創(chuàng)建好的單例對(duì)象實(shí)例。這種設(shè)計(jì)模式單例模式可以有效地減少數(shù)據(jù)庫(kù)連接的開(kāi)銷(xiāo),減少連接池競(jìng)爭(zhēng),提高系統(tǒng)的性能。