具体来说,我有一个DB类,每次调用类中的Query函数时都会打开和关闭多个MySQL连接。我应该打开一次连接吗?或者打开和关闭这样的连接是否可以?
答案 0 :(得分:3)
如果您不想更改而不是mysql_connect(),请使用mysql_pconnect() 这样您将使用打开的连接。我会同意@Sarfraz Ahmed - 只使用一次
答案 1 :(得分:3)
我应该打开一次连接吗?
没有
我认为最好释放内存
实际上,连接本身并不消耗内存 而且 - 最重要的部分 - 你不应该担心这些可以想象的事物 不要基于空洞的假设做出决定 以下是两条简单的规则:
答案 2 :(得分:3)
我的头脑简单(ISAM,无交易)C语言应用程序每天运行8个小时,通过一个单独的MySQL连接在一个数据库中更新多个表,这些连接始终保持打开状态。它工作得很好。任何时候都有任何类型的MySQL错误(不仅服务器消失了),代码只是再次调用mysql_real_connect()并且它没有任何麻烦。重新连接是我认为MySQL功能完美无缺的地方之一。
但是关于持久连接的好/坏有很多争议和讨论。你可以在这里找到一些:
- HTH
答案 3 :(得分:2)
我应该打开一次连接吗?或是 可以打开和关闭连接 像这样?
你应该只在需要时打开多个连接,否则打开多个连接就不是一个好主意,从而消耗大量内存,这是一个开销。
答案 4 :(得分:1)
一般情况下,回到您可以找到的最简单的MySQL教程并以此方式执行。除非你有问题需要解决,否则不要偏离。
当你保持简单的脑力时,MySQL的工作正常。不要增加复杂性。
顺便说一句,你在写另一个MySQL抽象层吗?为什么?这个问题是一个很好的例子,为什么重新发明轮子会有风险。答案 5 :(得分:0)
conecting也使用cpu时间。因此,如果您每页重新连接约8次,并且每天有大约100位访问者,平均每次调用5页,则您在一天内会有8 * 100 * 5 = 4000次重新连接。那是一个小网站。你应该考虑只连接一次或连接丢失时。这也会以某种方式降低您的电费; - )
答案 6 :(得分:0)
我认为您应该使用注册表对象来打开数据库连接,并使您的数据库对象成为单例。
Registry::Set('DB', new Database());
$DB = Registry::Get('DB');