php - 如何保持与数据库的连接打开

标签 php mysql database performance connection

我正在使用 mysql 数据库,其中涉及收集照片和人名,并在选择下拉菜单项时将它们显示在页面上。我正在使用 php 脚本访问数据库。

我习惯于每次访问数据库时都需要重新建立连接(我进行了一些修改,它起作用了),但我希望这段代码看起来更专业一点。有谁知道如何保持与数据库的连接打开,这样我就不需要每次请求数据时都重新建立连接?

最佳答案

我假设您的意思是在对服务器的多次调用中保持连接打开。在同一脚本中,您只需打开连接一次。

mysqli 文档显示了如何启用 persistent connections

但是,您应该对代码进行基准测试,以确保连接到数据库确实是一个性能限制因素。通过检查应用程序、查询和架构之间的相互作用,您可能会获得更大的返回。

使用较旧的 mysql_pconnect 函数,您可能会遇到连接的旧用户将事物置于非干净状态的问题:

The problem with persistent connections is that they can be left in unpredictable states by clients. For example, a table lock might be activated before a client terminates unexpectedly. A new client process reusing this persistent connection will get the connection "as is". Any cleanup would need to be done by the new client process before it could make good use of the persistent connection, increasing the burden on the programmer.

mysqli 逻辑会为您进行大量清理工作,因此这不是问题。

根据文档,清理包括:

  • 回滚事件事务
  • 关闭并删除临时表
  • 解锁表格
  • 重置 session 变量
  • 关闭准备好的语句(PHP 中经常发生)
  • 关闭处理程序
  • 释放通过 GET_LOCK() 获取的锁

关于php - 如何保持与数据库的连接打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762919/

相关文章:

javascript - 通用ajax表单提交

mysql - 无法将nodejs连接到mysql

C# WPF 程序在调试中运行,但不调试就无法发布

database - 正常化一个人的名字是否太过分了?

mysql - 数据库模式

php - 从数据库检索数据后如何操作

php - PHP 中的递归与迭代

php - 如何处理来自支付网关的响应数据?

PHP 和 MySQL - PHP 如何连接到 MySQL 服务器?

database - Entity Framework 代码首先导致数据库访问异常