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

时间:2012-03-08 21:11:36

标签: php mysql connection

我有一个包含一些mysql查询的网页, 我必须在每次查询后启动新的数据库连接和数据库关闭,否则它会更高效地在代码顶部启动一个数据库连接并在脚本底部关闭? 谢谢!

4 个答案:

答案 0 :(得分:5)

从不为每个查询创建新连接;它非常浪费,会让你的MySQL服务器负担过重。

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

答案 1 :(得分:5)

我更喜欢创建一种名为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。

答案 2 :(得分:0)

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

答案 3 :(得分:-1)

多个连接更适合安全性和跟踪。 如果您通过正面和背面之间的防火墙,将会定义超时,因此单个连接将成为问题。 但如果您的Web服务器与mysql位于同一主机上,则单个连接将更有效。