Zend的DB如何管理数据库连接(How Zend DB Manage Database Conne

2019-09-22 17:05发布

我使用Zend框架为我的PHP开发,这里是我用来执行查询的一个小功能。 这是不是一个错误。 该代码,一切工作正常。 但我想知道这背后的一些概念。

/** 
    * Get dataset by executing sql statement
    * 
    * @param  string $sql - SQL Statement to be executed
    * 
    * @return bool 
    */
    public function executeQuery($sql)
    {
        $this->sqlStatement = $sql;

        if ($this->isDebug)
        {
            echo $sql;
            exit;
        }

        $objSQL = $this->objDB->getAdapter()->prepare($sql);

        try
        {           
            return $objSQL->execute();

        }
        catch(Exception $error)
        {

            $this->logMessage($error->getMessage() . "  SQL : " .$sql);
            return false;
        }
        return false;
    }

贝娄是我不清楚的地方。

  1. 如何Zend_Db_Table_Abstract维护数据库连接?
  2. 难道是创建新的连接一切的时候,我把这个功能还是有一些连接池?
  3. 我没有写任何代码来打开或关闭数据库连接。 所以会自动Zend框架的密切联系?
  4. 如果打开和关闭连接的工作原理所有的时间,如果我执行该功能,是否有任何性能问题?

谢谢你,非常感谢您对这个建议和意见。

Answer 1:

创建连接

创建适配器类的实例不会立即连接到RDBMS服务器 。 该适配器将保存连接参数,并使得对需求的实际连接,在第一时间 ,你需要执行查询。 这确保了创建适配器目的是快速和廉价的。 您可以创建一个适配器的情况下,即使你不能确定你需要你的应用程序服务于当前请求期间运行任何数据库查询。

如果您需要强制适配器连接到RDBMS,使用getConnection()方法。 此方法返回如由相应的PHP数据库扩展表示的连接的对象。 例如,如果你使用任何适配器类为PDO驱动程序,那么的getConnection()返回PDO对象,启动它作为特定数据库的实时连接后。

如果你想赶上它抛出为无效帐户凭据,或其他故障而导致的任何异常连接到RDBMS服务器它可以迫使有用的。 这些异常不抛出,直到连接而成,因此它可以帮助简化您的应用程序代码,如果你处理异常在一个地方,而不是在对数据库的第一次查询的时间。

此外,适配器可以得到序列化,存储它,例如在一个会话变量。 这不仅可以为适配器本身,而是为聚集,就像一副Zend_Db_Select对象物体的其他对象是非常有用的。 默认情况下,适配器允许为系列化,如果你不想要的话,你应该考虑传递Zend_Db的:: ALLOW_SERIALIZATION选项以虚假,见上面的例子。 要尊重懒连接原理,适配器将不被解序列化后重新连接本身。 然后,您必须调用的getConnection()自己。 您可以通过使用TRUE传递Zend_Db的:: AUTO_RECONNECT_ON_UNSERIALIZE作为一个适配器选项使适配器自动重新连接。

关闭连接

一般而言,这是没有必要关闭数据库连接。 PHP自动清理所有资源和请求的结束。 数据库的扩展设计,关闭作为参考资源对象的连接被清除。

但是,如果你有许多启动数据库连接长时间的PHP脚本,你可能需要关闭连接,从而避免用完您的RDBMS服务器的容量。 您可以使用适配器的closeConnection()方法来显式关闭底层数据库连接。

自发布1.7.2,您可以查看当前连接到与方法isConnected()RDBMS服务器。 这意味着连接资源已启动,并没有关闭。 这个功能是当前不能够测试例如连接的服务器侧关闭。 这是在内部使用关闭连接。 它允许你多次关闭连接没有错误。 这已经是1.7.2 PDO适配器,而不是为别人之前的情况。

更多信息



文章来源: How Zend DB Manage Database Connections