From 4e614ace820166d83b4767983404f79b2ba44949 Mon Sep 17 00:00:00 2001 From: Angie Byron Date: Tue, 4 Aug 2009 05:36:57 +0000 Subject: #434350 by cpliakas and Crell: Add a method to explicitly close a database connection. --- includes/database/database.inc | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'includes/database/database.inc') diff --git a/includes/database/database.inc b/includes/database/database.inc index 5063b4233..a093fab4b 100644 --- a/includes/database/database.inc +++ b/includes/database/database.inc @@ -1363,6 +1363,29 @@ abstract class Database { } } + /** + * Closes a connection to the server specified by the given key and target. + * + * @param $target + * The database target name. Defaults to NULL meaning that all target + * connections will be closed. + * @param $key + * The database connection key. Defaults to NULL which means the active key. + */ + public static function closeConnection($target = NULL, $key = NULL) { + // Gets the active conection by default. + if (!isset($key)) { + $key = self::$activeKey; + } + // To close the connection, we need to unset the static variable. + if (isset($target)) { + unset(self::$connections[$key][$target]); + } + else { + unset(self::$connections[$key]); + } + } + /** * Instruct the system to temporarily ignore a given key/target. * @@ -2071,6 +2094,20 @@ function db_driver() { return Database::getConnection()->driver(); } +/** + * Closes the active database connection. + * + * @param $options + * An array of options to control which connection is closed. Only the + * target key has any meaning in this case. + */ +function db_close(array $options = array()) { + if (empty($options['target'])) { + $options['target'] = NULL; + } + Database::closeConnection($options['target']); +} + /** * @} End of "defgroup database". */ -- cgit v1.2.3