我有一个网页,里面有一些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位于同一主机上,那么单次连接将更高效。