Php 我应该多久关闭一次数据库连接?
目前,我正在应用程序的初始化中打开一个数据库连接。这是一个相当小的应用程序,PHP,如果相关的话 我是否应该连接到数据库,进行调用,然后关闭并为我编写的每个数据库函数重复此过程 例如,我有以下函数,它从我的应用程序的初始化中获取$db变量Php 我应该多久关闭一次数据库连接?,php,mysql,database,optimization,Php,Mysql,Database,Optimization,目前,我正在应用程序的初始化中打开一个数据库连接。这是一个相当小的应用程序,PHP,如果相关的话 我是否应该连接到数据库,进行调用,然后关闭并为我编写的每个数据库函数重复此过程 例如,我有以下函数,它从我的应用程序的初始化中获取$db变量 function get_all_sections() { global $db; $sql = 'select * from sections'; if (!$db->executeSQL($sql, $result))
function get_all_sections()
{
global $db;
$sql = 'select * from sections';
if (!$db->executeSQL($sql, $result))
{
throw new Exception($db->getDatabaseError());
exit();
}
$sections = array();
for ($i = 0; $i < $db->numberOfRows($result); $i++)
{
$sections[] = new Section($db->fetchArray($result, MYSQLI_ASSOC));
}
return $sections;
}
函数获取所有部分()
{
全球$db;
$sql='select*from sections';
if(!$db->executeSQL($sql,$result))
{
抛出新异常($db->getDatabaseError());
退出();
}
$sections=array();
对于($i=0;$i<$db->numberOfRows($result);$i++)
{
$sections[]=新节($db->fetchArray($result,MYSQLI_ASSOC));
}
返回$sections;
}
如果我在获取行后打开连接然后关闭它会更好吗?这似乎有很多连接是打开和关闭的。如果您在()上有连接池,则在需要时可以获取新连接。但是,我要说的是,我习惯于将任何资源视为“有限的”,如果您打开数据库句柄,请尽可能长时间地保留它。连接到数据库需要有限的时间。当通过域套接字或命名管道连接时,它可以忽略不计,但如果通过网络连接,或者更糟糕的是,通过开放式Internet连接,它可能会大得多。至少在请求的生命周期内保持连接。用于连接池,并在每次操作结束时关闭。线程不会真正关闭,线程将被重新使用。这种方式既安全又高效。因为PHP MySQL连接相当轻量级,所以您可以在需要时打开和关闭连接。其他数据库连接的情况并非如此,例如连接到SQL Server,后者的连接相当繁重 但是,在所有情况下,都要尽可能地进行可维护性/逻辑/依赖性方面最有意义的操作。然后,如果你发现你感觉到明显的减速,你可以优化那些需要提速的区域
如果有疑问,请遵循黄金法则:不要过早优化。最简单的解决方案是使用mysql\u pconnect()
这样,如果连接已经打开,它将使用它,而不是创建一个新的连接。如果不是,它将再次连接您使用连接池吗?我一直听到另一种建议:总是尽快关闭数据库连接。如果在达到限制时不关闭,您将收到太多的客户端错误,我相信。我是这么想的,但如果我错了,请纠正我。