Php Zend DB如何管理数据库连接
我在PHP开发中使用Zend框架,这里是一个用于执行查询的小函数。这与错误无关。代码和一切工作正常。但我想知道这背后的一些概念Php Zend DB如何管理数据库连接,php,mysql,zend-framework,zend-db,zend-db-table,Php,Mysql,Zend Framework,Zend Db,Zend Db Table,我在PHP开发中使用Zend框架,这里是一个用于执行查询的小函数。这与错误无关。代码和一切工作正常。但我想知道这背后的一些概念 /** * Get dataset by executing sql statement * * @param string $sql - SQL Statement to be executed * * @return bool */ public function executeQuery($sql)
/**
* 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;
}
下面是我不清楚的地方
感谢并感谢您在这方面的建议和意见。建立联系 创建适配器类的实例不会立即连接到RDBMS服务器。适配器保存连接参数,并根据需要进行实际连接,第一次执行查询时。这确保了创建适配器对象既快捷又便宜。即使您不确定在应用程序服务的当前请求期间是否需要运行任何数据库查询,也可以创建适配器的实例 如果需要强制适配器连接到RDBMS,请使用getConnection()方法。此方法返回连接的对象,由相应的PHP数据库扩展表示。例如,如果您为PDO驱动程序使用任何适配器类,那么getConnection()将PDO对象作为到特定数据库的实时连接启动后返回该对象 如果您希望捕获由于无效帐户凭据或其他连接到RDBMS服务器的失败而引发的任何异常,则强制连接可能非常有用。在建立连接之前不会引发这些异常,因此,如果您在一个位置处理异常,而不是在第一次查询数据库时处理异常,则可以帮助简化应用程序代码 此外,适配器可以序列化以将其存储在会话变量中。这不仅对适配器本身非常有用,而且对聚合它的其他对象(如Zend_Db_Select对象)也非常有用。默认情况下,允许适配器被序列化,如果不需要,则应该考虑将ZDENYDB::AuthOracle序列化选项设为false,请参阅上面的示例。为了尊重延迟连接原则,适配器在取消序列化后不会重新连接自身。然后必须自己调用getConnection()。通过将Zend_Db::auto_reconnect_ON_UNSERIALIZE与TRUE作为适配器选项传递,可以使适配器自动重新连接 关闭连接 通常不需要关闭数据库连接。PHP会自动清理所有资源,并在请求结束时进行清理。数据库扩展设计用于在清除对资源对象的引用时关闭连接 但是,如果您有一个启动许多数据库连接的长时间PHP脚本,则可能需要关闭连接,以避免耗尽RDBMS服务器的容量。可以使用适配器的closeConnection()方法显式关闭基础数据库连接 从1.7.2版开始,您可以使用isConnected()方法检查当前是否连接到RDBMS服务器。这意味着连接资源已启动且未关闭。此函数当前无法测试例如服务器端连接的关闭。这在内部用于关闭连接。它允许您多次关闭连接而不会出现错误。PDO适配器在1.7.2之前就已经出现了这种情况,但其他适配器则没有