如何使用zend框架只建立一次DB连接


How to establish DB connection only once using zend frame work

我是zend框架的新手。我用Zend_Db_Table_Abstract做数据库操作。现在,我想知道Zend_Db_Table_Abstract将在整个应用程序中创建单个db连接,还是为每个请求创建。

这是我的类它扩展了zend_db_table_abstract

<?php
    class Model_AppsandBills extends Zend_Db_Table_Abstract {
        protected $_name="appsandbills_master";
    }
?>
对不起,我的英语很差。

创建Adapter类的实例不会立即连接到RDBMS服务器。适配器保存连接参数,并在您第一次需要执行查询时按需进行实际连接。这确保了创建Adapter对象是快速和廉价的。即使您不确定在应用程序正在处理的当前请求期间是否需要运行任何数据库查询,也可以创建适配器的实例。

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

如果您想捕获由于无效帐户凭据或连接到RDBMS服务器失败而抛出的任何异常,则强制连接可能是有用的。这些异常在建立连接之前不会被抛出,因此如果在一个地方处理异常,而不是在第一次查询数据库时处理异常,可以帮助简化应用程序代码。

此外,可以序列化适配器以存储它,例如,存储在会话变量中。这不仅对适配器本身非常有用,而且对聚合适配器的其他对象(如Zend_Db_Select对象)也非常有用。默认情况下,允许对适配器进行序列化,如果您不希望这样做,您应该考虑将Zend_Db::ALLOW_SERIALIZATION选项设置为FALSE,参见上面的示例。为了遵守延迟连接原则,适配器在非序列化后不会重新连接自己。然后必须自己调用getConnection()。你可以通过传递带有TRUE的Zend_Db::AUTO_RECONNECT_ON_UNSERIALIZE作为适配器选项,使适配器自动重新连接。

来源:http://framework.zend.com/manual/1.12/en/zend.db.adapter.html zend.db.adapter.connecting.getconnection

也参考:如何Zend DB管理数据库连接