2

我试图优化我的一些 PHP 代码。我发现我的 PHP 脚本的大部分时间都花在了脚本开头连接到我的 mysql 数据库的过程中。

我只在开始时连接到数据库一次,并在脚本结束时关闭数据库连接。

但是对于每个请求此页面的用户,都必须建立一个新的连接。

有没有办法保存对数据库的引用并为所有请求共享它?

4

2 回答 2

5

是的,你可以做到这一点。

如果您使用的是 MySQLi 扩展(最后没有i的旧扩展已过时!p: ),您可以通过在创建实例时将前缀作为主机名 传递来创建持久连接:

请参阅mysqli::__construct

如果你真的在使用旧的 MySQL 扩展,有mysql_pconnect for persistent connections


或者,如果您使用的是 PDO,那么您可以setAttribute()使用PDO::ATTR_PERSISTENT.

有关在PDO.

于 2013-03-03T13:54:03.677 回答
2

您可以使您的连接持久(对于 PDO,使用PDO::ATTR_PERSISTENT => true),但我的建议是找出您的脚本为什么要花费大量时间连接到 mysql 并在那里进行一些改进。

考虑一下:

  • 使用 MySQL 服务器 IP 而不是主机名,以消除解析 dns 所需的时间。
  • 禁用 mysql 自动补全:(skip-auto-rehash来自评论my.cnf
  • 如果您进行大量查询,这些查询会一遍又一遍地返回相同的内容,请考虑使用缓存系统来缓存查询结果。
  • 在codereview.stackexchange.com上发布您的代码,以从其他专业知识中受益,从而进一步改进您的代码。
  • 要进一步调试问题,请从控制台连接到 MySQL 服务器并检查打开连接、更改数据库、选择等所需的时间。
于 2013-03-03T14:02:48.080 回答