PHP/MySQL:为每个查询创建新的连接


PHP/MySQL: Create new connection for each query?

我有一个网页,里面有一些mysql查询,我必须在每次查询后启动新的数据库连接并关闭数据库,还是更有效地在代码顶部只启动一个数据库连接并在脚本底部关闭?谢谢

Never为每个查询创建一个新连接;这是非常浪费的,并且会使MySQL服务器负担过重。

在脚本顶部创建一个连接就足够了——所有后续查询都将使用该连接,直到页面结束。您甚至可以在include()插入脚本的其他脚本中使用该连接,其中包含mysql_connect()调用。

我更喜欢创建某种名为Database的类,创建后将使用mysqli(mysql的OOP版本)创建数据库连接。

这样我就不用担心了,而且我有一个可以访问数据库的静态类。

class MyAPI {
    private static $database = false;
    public static function GetDatabase() {
        if (MyAPI::$database === false) {
            MyAPI::$database = new Database(credentials can go here)
        }
        return MyAPI::$database;
    }
}

现在,包含API和数据库的系统可以访问数据库,其初始化代码不必根据程序的哪个部分运行而穿插在文件中,如果不需要,则不会创建数据库/连接(仅在调用之前)。


为了好玩,我还喜欢在Database类中有一个函数,它将执行查询并返回结果,这样我就不必在整个代码中一遍又一遍地使用SAME while循环,这取决于我在哪里进行这些调用。


我也忘了回答你的问题。没有多重连接!它的baaaad。

只创建一个连接。您甚至不必手动关闭它。

多重连接更适合安全性和跟踪。如果你要通过前端和后端之间的防火墙,就会定义一个超时,所以单个连接将是一个问题。但是,如果您的web服务器与mysql位于同一主机上,那么单次连接将更高效。