我正在研究简单的数据库连接类。我正在使用PHP和PDO。
由于我需要连接到多个数据库,我想在类变量中汇集所有数据库连接,然后根据我的脚本需要访问每个数据库连接。
这是一些伪代码:
class Database_Driver
{
private static $db_connect_pool;
public static function openConnect($params_arr)
{
try
{
$db_driver_str = $params_arr['driver'];
$db_host_str = $params_arr['host'];
$db_name_str = $params_arr['db_name'];
$db_username_str = $params_arr['db_username'];
$db_password_str = $params_arr['db_password'];
$connect_options_arr = array(PDO::ATTR_PERSISTENT => true);
self::$db_connect_pool[''.$db_driver_str.'_'.$db_name_str.''] = new PDO("".$db_driver_str.":host=".$db_host_str.";db_name=".$db_name_str."", $db_username_str, $db_password_str, $connect_options_arr);
}
catch (Exception $e)
{
print_r($e);
}
}
public static getConnection($db_driver, $db_name)
{
return self::$db_connect_pool[''.$db_driver.''.$db_name.''];
}
}
Database_Driver::openConnect($params_str);
$db_handle = Database_Driver::getConnection($db_driver, $db_name);
$st_handle = $db_handle->prepare('SQL Statement');
$st_handle->execute();
所以在我的脚本结束时,我想关闭所有打开的数据库连接。我怎样才能做到这一点?我是否只是使数组无效,即self::$db_connect_pool = NULL;
,或者是否有其他方法可以有效地执行此操作。
提前致谢。
答案 0 :(得分:2)
要关闭连接,您需要通过确保来销毁对象 删除所有剩余的引用 - 你这样做 为保存对象的变量赋值NULL。如果你不这样做 明确地说,PHP会自动关闭你的连接 脚本结束。
因此,除非需要/需要一路清理以释放资源,否则可以让连接自行关闭。
持久连接不会在脚本末尾关闭,而是缓存以供将来使用。将此类连接设置为NULL应该将它们关闭。
答案 1 :(得分:0)
PHP会自动关闭脚本末尾的所有打开的连接,因此您应该已经完成了。
但是,如果您需要在脚本执行结束之前关闭连接,则需要循环连接池阵列并单独关闭连接。