如何组织函数内数据库连接的处理?

时间:2012-05-04 17:37:48

标签: php mysql c database

当我用PDO和MySQL编写PHP代码时,我总是在需要它们的时候创建连接:

result pseudo_function() {
  create and open connection
  do stuff
  close connection
  return result
}

现在,我开始用C编程,我已经看到指针是一种将整个连接作为参数传递给函数的有趣方法。我想知道在服务整个用户请求之前传递函数之间的连接是否更好。

澄清:对于一个用户请求,可能会有1-5个函数调用,然后打开数据库,获取数据,执行某些操作,关闭并返回。

如果你保持连接打开,那么性能也会有所不同吗?

3 个答案:

答案 0 :(得分:3)

最好保持连接打开并在该连接上执行5次操作,而不是每次都打开新连接。

您还可以使用单例存储库模式延迟加载数据库;存储库只打开一次连接,在下次调用时,它将返回一个缓存的结果。

答案 1 :(得分:3)

我见过的大多数PHP代码的“标准习惯用法”似乎是“打开连接,保持打开”。

php.net目前似乎已经失败,但这两个链接可能会引起人们的兴趣:

如果你正在运行Apache,也许mod_dbd可能是一个很好的解决方案:

以下是关于不关闭连接的含义的讨论:

答案 2 :(得分:2)

如果使用PHP开发Web应用程序,通常(我认为最有效的方法)打开数据库连接一次并在脚本终止时关闭它。在完成其他工作时保持连接打开并不会产生任何开销或根本不需要任何操作,但每次重新连接都会。