为每个函数打开和关闭 SQL,还是打开 SQL 做所有事情然后关闭 SQL?

Posted

技术标签:

【中文标题】为每个函数打开和关闭 SQL,还是打开 SQL 做所有事情然后关闭 SQL?【英文标题】:Open and close SQL for each function, or open SQL do everything then close SQL? 【发布时间】:2011-07-09 19:55:29 【问题描述】:

我想知道 php/mysql 开发的最佳实践是什么。

例如,我有以下内容:

connect.php close.php

在connect.php中,它使用require_once('classes/database.php')并使用$database = new database();然后调用$database->connect();

我应该 require_once 说一个 header.php 和一个 footer.php 并有一个整体连接(每个主网页都包括这些),或者,当我需要它时打开和关闭它。例如,我有一个 functions.php 文件,其中包含我应该执行的功能:

public function test() 
    $db = new database();
    // db setup here
    $db->connect();
    // do stuff here
    $db->disconnect();

public function test() 
    // stuff here

谢谢!

【问题讨论】:

【参考方案1】:

连接到数据库通常是一个相当昂贵的过程 - 耗时。尽可能避免多次连接以响应单个请求。

【讨论】:

【参考方案2】:

打开到数据库的连接通常需要一些时间,所以我建议在脚本开头一劳永逸地打开它。

还好知道在脚本结束时,PHP 会自动关闭打开的连接,因此通常不需要显式关闭与数据库的连接。

为了有更健壮的代码,我会做这样的事情:

class Database 
    var $connection = null;

    public function connect() 
        if($this->connection == null) 
            // setup the connection here
        
    

这样,每次您需要数据库连接时,您都可以调用$db->connect(),但工作实际上只会在第一次调用时完成。这将确保即使在代码重构之后,例如在您的头文件中,数据库也会在需要时连接。

【讨论】:

以上是关于为每个函数打开和关闭 SQL,还是打开 SQL 做所有事情然后关闭 SQL?的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中使用 PDO 打开的 SQL 连接是不是必须关闭

“打开/关闭”SqlConnection还是保持打开状态?

多次打开和关闭 SQL 连接有多糟糕?确切的效果是啥?

我应该何时打开和关闭与 SQL Server 的连接

如何为 sql 中的 NULL/空值列生成带有打开和关闭标记的 XML?

快速打开和关闭SQL服务