一、单例模式可以保证一个对象只实例化一次,这个我该怎么理解呢?是a用户本次请求在这个进程中只是实例化一次还是a用户实例化以后,b用户在来访问时如果a实例化也是用的a的,如果是按后者来说的话,那如下代码也就是说数据库的连接数只是一个咯?不是吧?(如下代码)
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的,如果是按后者来说的话,那如下代码也就是说数据库的连接数只是一个咯?不是吧?(如下代码)
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用户的请求使用的是不同的数据库实例。