關於單列模式和記憶體相關的

來源:互聯網
上載者:User
一、單例模式可以保證一個對象只執行個體化一次,這個我該怎麼理解呢?是A使用者本次請求在這個進程中只是執行個體化一次還是A使用者執行個體化以後,B使用者在來訪問時如果A執行個體化也是用的A的,如果是按後者來說的話,那如下代碼也就是說資料庫的串連數只是一個咯?不是吧?(如下代碼)

class nmdb
{

private $link;static private $_instance;// 串連資料庫private function __construct($host, $username, $password){    $this->link = mysql_connect($host, $username, $password);    $this->query("SET NAMES 'utf8'", $this->link);    //echo mysql_errno($this->link) . ": " . mysql_error($link). "n";    //var_dump($this->link);    return $this->link;}private function __clone(){}public static function get_class_nmdb($host, $username, $password){    //$connector = new nmdb($host, $username, $password);    //return $connector;        if( FALSE == (self::$_instance instanceof self) )    {        self::$_instance = new self($host, $username, $password);    }    return self::$_instance;}// 串連資料表public function select_db($database){    $this->result = mysql_select_db($database);    return $this->result;}// 執行SQL語句public function query($query){    return $this->result = mysql_query($query, $this->link);}// 將結果集儲存為數組public function fetch_array($fetch_array){    return $this->result = mysql_fetch_array($fetch_array, MYSQL_ASSOC);}// 獲得記錄數目public function num_rows($query){    return $this->result = mysql_num_rows($query);}// 關閉資料庫連接public function close(){    return $this->result = mysql_close($this->link);}

}
?>

回複內容:

一、單例模式可以保證一個對象只執行個體化一次,這個我該怎麼理解呢?是A使用者本次請求在這個進程中只是執行個體化一次還是A使用者執行個體化以後,B使用者在來訪問時如果A執行個體化也是用的A的,如果是按後者來說的話,那如下代碼也就是說資料庫的串連數只是一個咯?不是吧?(如下代碼)

class nmdb
{

private $link;static private $_instance;// 串連資料庫private function __construct($host, $username, $password){    $this->link = mysql_connect($host, $username, $password);    $this->query("SET NAMES 'utf8'", $this->link);    //echo mysql_errno($this->link) . ": " . mysql_error($link). "n";    //var_dump($this->link);    return $this->link;}private function __clone(){}public static function get_class_nmdb($host, $username, $password){    //$connector = new nmdb($host, $username, $password);    //return $connector;        if( FALSE == (self::$_instance instanceof self) )    {        self::$_instance = new self($host, $username, $password);    }    return self::$_instance;}// 串連資料表public function select_db($database){    $this->result = mysql_select_db($database);    return $this->result;}// 執行SQL語句public function query($query){    return $this->result = mysql_query($query, $this->link);}// 將結果集儲存為數組public function fetch_array($fetch_array){    return $this->result = mysql_fetch_array($fetch_array, MYSQL_ASSOC);}// 獲得記錄數目public function num_rows($query){    return $this->result = mysql_num_rows($query);}// 關閉資料庫連接public function close(){    return $this->result = mysql_close($this->link);}

}
?>

PHP-FPM 機制是每個請求完畢後釋放所有資源,包括資料庫執行個體。

所以PHP-FPM下每個請求都會執行個體化一次資料庫執行個體。A使用者的請求和B使用者的請求使用的是不同的資料庫執行個體。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.