我何时应该在PHP中关闭数据库连接?

时间:2013-12-10 10:50:14

标签: php mysql mysqli

我不像是一个php开发人员但是我必须使用它而我并不知道PHP如何在会话期间处理内存分配。

我正在开发一个请求HTTP身份验证的应用程序,一旦您登录,您可以通过一个漂亮的界面操作数据。
有人在另一篇文章中告诉我,我不应该在每次执行后关闭mysql数据连接,但我不知道这个连接在使用这个应用程序时是如何保留内存的,因为在服务器端我不知道PHP保留了什么记忆与否。

所以我的问题是我应该使用单例连接到数据库并且永​​远不要关闭它(因为我永远不知道应用程序何时没有使用。或者我应该支持我今天所做的事情:打开连接 - &gt ;执行语句 - >关闭连接。

PS:我正在使用mysqli

编辑1
我的应用程序是使用MVC模式设计的意思:

|''''''''''|      |'''''''''''''|      |''''''''''''''|
| view.php |  ==> | control.php |  ==> | database.php |
|----------|      |_____________|      |______________|

该模式允许视图仅通过control.php与数据交互,SELECT然后将函数从database.php调用到EDITpublic function __destruct(){ mysql_close($this->connection); } 数据。你给我的解释,我应该说:

database.php

在{{1}}内,但是当需要选择或修改数据时,该页面会加载,因此它只会在短时间内执行,这意味着它仍会在请求结束时关闭连接。

这给出了一个更精确的问题,即我应该在哪里提供您提供的代码的安静性,或者我的模式是否与PHP相关?

2 个答案:

答案 0 :(得分:10)

永远不要为每个查询创建新连接;您甚至不必手动关闭它。

只需在页面开头创建连接

查看:How do you efficiently connect to mysql in php without reconnecting on every query

你可以用这个:

public function __destruct()
{
   mysql_close($this->connection);
}

页面关闭时会调用它

答案 1 :(得分:2)

来自PHP的Mysqli documentation

  

客户端进程和数据库之间的连接可以由客户端进程重用,而不是多次创建和销毁。这减少了开销......