php - 每次查询或脚本结束后关闭数据库连接

标签 php mysql database-connection

这是使用 mysqli 的 php 应用程序。

其他人建议在每次查询后立即关闭数据库连接。

当前系统有单例数据库连接,因此这里不存在过度创建新连接的问题。仅未使用的打开连接。(例如,脚本尚未执行完毕,数据库未自行关闭。)

因此,等待脚本完成的成本与每个脚本多次不必要的数据库连接关闭之间似乎需要平衡。我倾向于认为第一种更安全。但我不太确定这是否足够。例如,如果我这样做:

$userA->sendMessageTo($userB);
And inside this:
$userA->send($userB);
$userA->useSomePoints();
$userA->flushPointsBalance();
....

想象每个方法都会有一些数据库操作,但这只是一个脚本调用/请求,如果数据库打开/关闭发生在每个查询周围,这肯定会发生不止一次,与在每个查询后不立即关闭它相比方法范围。

那么哪种方式更好呢?

最佳答案

通常,让数据库包装类(或 ORM)为整个请求创建单个连接,并且仅在清理期间关闭它(通过析构函数或通过 PHP 的清理)是可以的。如果这是一个问题,则可能意味着在打开和关闭连接之间发生了很长时间的事情,而这正是您应该解决的问题。

原因可能是:

  1. 不使用索引的查询速度较慢
  2. 一些其他高延迟阻塞 IO(文件读取、解码等)

通过努力解决这些问题,你会获得更好的 yield ,而不是着眼于如何建立和关闭联系。

关于php - 每次查询或脚本结束后关闭数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421296/

相关文章:

python - 重新启动 Bottle 应用程序(以编程方式)

postgresql - 未捕获 未捕获错误 : Unsupported operation: Socket constructor in dart with postgresql

php - 无法结束 PHP session

PHP PDO 语句 : quotes within quotes cause query to fail

Mysql 多关键字相似搜索 - 按字符串中最多关键字排序

mysql - 将 bash 命令的输出存储到数据库

php - 从不同表获取时子查询出错

postgresql - 如何从 JDBC 连接到 heroku postgres 数据库?

php - 未捕获的异常 'PDOException with message ' SQLSTATE[HY000] [2013]

php - 在 laravel 中通过 url 传递变量