Php 我应该多久关闭一次数据库连接?

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))

目前,我正在应用程序的初始化中打开一个数据库连接。这是一个相当小的应用程序,PHP,如果相关的话

我是否应该连接到数据库,进行调用,然后关闭并为我编写的每个数据库函数重复此过程

例如,我有以下函数,它从我的应用程序的初始化中获取$db变量

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()


这样,如果连接已经打开,它将使用它,而不是创建一个新的连接。如果不是,它将再次连接

您使用连接池吗?我一直听到另一种建议:总是尽快关闭数据库连接。如果在达到限制时不关闭,您将收到太多的客户端错误,我相信。我是这么想的,但如果我错了,请纠正我。