• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

关于单列模式和内存相关的

php 搞代码 3年前 (2022-01-25) 64次浏览 已收录 0个评论
文章目录[隐藏]

一、单例模式可以保证一个对象只实例化一次,这个我该怎么理解呢?是A用户本次请求在这个进程中只是实例化一次还是A用户实例化以后,B用户在来访问时如果A实例化也是用的A的,如果是按后者来说的话,那如下代码也就是说数据来4源gaodaimacom搞#代%码*网搞代gaodaima码库的连接数只是一个咯?不是吧?(如下代码)

<?php
class nmdb
{

<code>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);}</code>

}
?>

回复内容:

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

<?php
class nmdb
{

<code>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);}</code>

}
?>

PHP-FPM 机制是每个请求完毕后释放所有资源,包括数据库实例。

所以PHP-FPM下每个请求都会实例化一次数据库实例。A用户的请求和B用户的请求使用的是不同的数据库实例。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:关于单列模式和内存相关的

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址