首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理MySql和mysql_close问题的简单类

问处理MySql和mysql_close问题的简单类
EN

Stack Overflow用户
提问于 2010-08-13 08:02:55
回答 1查看 1.3K关注 0票数 2

下面是一个使用数据库的简单php类。这个类问题出在启动mysql_close函数的__destruct方法中。如果我在代码中创建了两个非常接近的DB对象,就会导致错误。看起来mysql_close关闭了所有数据库连接,而不仅仅是他自己的($this->dbLink)。为什么会发生这种情况?

代码语言:javascript
复制
    require_once("modules/required/OptionsReader/m_OptionsReader.php");

    class DB{
        private $dbLink;

        public function  __construct() {
            $options = new OptionsReader();
            $DBSettings = $options->getDBSettings();
            $this->dbLink = mysql_connect($DBSettings->getAddress(),$DBSettings->getUserName(),$DBSettings->getPswd());
            @mysql_select_db($DBSettings->getDBName()) or die( "Unable to select database");
            mysql_query( "set names 'utf8'" );
        }

        public function  __destruct() {
            mysql_close($this->dbLink);
        }


        public function launchQuery($query){
            return mysql_query($query);
        }
    }
?>

附注:我知道这个问题的简单解决方案就是从__desctuctor close()函数中创建并手动启动它,但如果能理解发生了什么,那就太好了。谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-13 08:46:19

@zneak是正确的。mysql_connect确实将连接汇集在一起。问题是,为什么要关闭连接?在我多年的PHP语言开发中,我可以用一只手数出我使用mysql_connect的次数,我几乎只使用mysql_pconnect

来自http://php.net/mysql_pconnect -

与MySQL服务器建立持久连接。

mysql_pconnect()的行为与mysql_connect()非常相似,但有两个主要区别。

首先,当连接时,该函数将首先尝试查找已经使用相同的主机、用户名和密码打开的(持久)链接。如果找到,将返回它的标识符,而不是打开新的连接。

其次,当脚本执行结束时,与SQL服务器的连接不会关闭。相反,链接将保持打开状态以供将来使用(mysql_close()不会关闭由mysql_pconnect()建立的链接)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3472972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档