2010-10-08 106 views
0

我有我的代码中的多个PHP函数和每个函数试图建立MySQL连接,发送查询和关闭MySQL连接。这是一个好的设计,还是应该从主函数设置一个连接,然后将这些变量传递给每个函数来执行查询?MySQL的性能要求

另外,当尝试在func1()中执行mysql_query的第二个实例时,这段代码是否会出错?在func2中调用的mysql连接实例是不是独立于func1中调用的实例?在我的代码中,我似乎得到了不一致的行为。有时,我收到错误,但是当我刷新页面时,似乎没有问题。任何建议,欢迎。谢谢。

def func1() { 

mysql_connect(params) 

mysql_query() 

func2() 

mysql_query() 

mysql_close() 

} 


def func2() { 

mysql_connect(params) 

mysql_query() 

mysql_close() 

} 

回答

2

我不能说这是可怕的性能打击,但它只是没有意义。
打算打开一次的数据库连接。
如果你需要从盒子里取出5个苹果 - 你打开并关闭这个盒子5次?或者只是打开它,一次搞定? ;-)
同样在这里。

只需打开连接一次,永远不会关闭它。它会自动完成。

+0

我同意你的看法,我只是太担心让我的代码模块并通过更少的变量。虽然看起来不合理,但我肯定可以通过另一个变量。 – user429113 2010-10-08 07:27:05

+0

@ user429113您可以保持模块化。有两种方法。一个简单的(我个人更喜欢它):不要传递任何东西。所有的mysql函数默认都可以使用上次打开的连接。无需打开或传递任何东西。 99,9%的脚本足够了。当你需要明确设置连接资源时,唯一的情况是当你需要2个不同的连接时。这是你的第二选择。在一个变量存储连接资源,并通过它(在内部,当然,你的数据库类的内部,没有必要将它传递的时候被调用其他地方的函数) – 2010-10-08 07:45:05

1

您应该使用单例创建或获取唯一的MySQL连接,不建议使用多连接,因为您必须“命名”每个连接并指定要使用的连接。

1

我通常用在我的项目一个单独的连接。

//on the beginning of the file I connect to the database 
$bdconn = mysql_connect(/* params */); 

    //things to do on the page 
    {...} 
//at the end of the page I disconnect from it 
mysql_close($dbconn); 

如果你要连接到其它数据库以及在运行,那么你只需要连接到其他一个,但后来只是重新连接到第一个。我认为在同一时间处理更多的数据库是没有用的。

+2

从您的代码中删除'@'因为它是无用的,不好的做法 – 2010-10-08 07:45:59

+0

我d强烈建议您延迟连接的创建,直到您的代码实际需要使用它时,如果您担心性能。 (如果你打包mysql_query调用并为连接使用一个静态变量,这是微不足道的) – symcbean 2010-10-08 15:21:08