进行销毁的时候出现错误,是不是单例连接的只有一个句柄?

class conn{
private $db_hand;
function conn(){
$mysql_server_name="localhost";
$mysql_username="root";
$mysql_password="";
$mysql_database="test";
$this->db_hand=mysql_connect($mysql_server_name, $mysql_username,
$mysql_password)or die("连接数据库失败");

}
public static function get(){
static $db = null;
if ( $db == null )
$db = new conn();
return $db;

}
public function connect(){
return $this->db_hand;
}
}

然后进行销毁的时候出现错误,是不是单例连接的只有一个句柄,然后调用这个类的时候用析构函数的时候进行了多次关闭?能说说原理嘛?

海绵宝宝撒
浏览 59回答 2
2回答

倚天杖

class conn{private $db_hand;function conn(){$mysql_server_name="localhost";$mysql_username="root";$mysql_password="";$mysql_database="test";$db_hand=mysql_connect($mysql_server_name, $mysql_username,$mysql_password)or die("连接数据库失败");$this->db_hand=$db_hand;}function __destruct(){$te=mysql_close($this->db_hand);if($te)echo 'ok';elseecho 'no';}}$class=new conn;不要怪我无视你的中间的代码我来解释一下:你在开始把 $db_hand 定义为了本类的私有变量。我看你这里的写法是错的:$this->db_hand=mysql_connect($mysql_server_name, $mysql_username,$mysql_password)or die("连接数据库失败");这样写,你下面是没办法调用的。。你换成这样写:$db_hand=mysql_connect($mysql_server_name, $mysql_username,$mysql_password)or die("连接数据库失败");$this->db_hand=$db_hand;首先,赋值-然后在给名字。下面的销毁函数才可以使用function __destruct()//销毁函数{$te=mysql_close($this->db_hand);//关闭数据库if($te)//关闭成功echo 'ok';else//失败echo 'no';} private 是定义私有变量。换句话说,你这个$db_hand只能在本类内被使用。首先你必须声明这个变量的值:$db_hand=mysql_connect($mysql_server_name, $mysql_username,$mysql_password)or die("连接数据库失败");声明 以后,你在初始化它(其他函数才可以使用):$this->db_hand=$db_hand;$this->是访问内部变量的意思,这个是固定的db_hand是我随便取的。$db_hand是上面我声明的变量,你也可以换成其他的,只要它在初始化之上,都可以。、其他的函数就用$this->db_hand进行访问你刚才定义的$db_hand

慕森卡

你这个不是长连接 不用手工关闭 PHP机制会自动关闭不用的mysql链接
打开App,查看更多内容
随时随地看视频慕课网APP