【发布时间】:2013-10-24 04:55:05
【问题描述】:
确保我正在编写一个方案以最大限度地减少与我的 MySQL 数据库的连接数的最佳方法是什么?
目前,我的服务器上有一个 ubuntu / PHP / apache 设置,我正在使用以下代码和 PDO 来确保持久连接:
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
PDO::ATTR_PERSISTENT => true
));
但是,我似乎始终有 10 个或更多连接。我不确定这是为什么。引用php.net:
许多网络应用程序都将从建立持久连接中受益 到数据库服务器。持久连接最后没有关闭 脚本,但在另一个脚本请求时被缓存并重新使用 使用相同凭据的连接。持久连接 缓存允许您避免建立新的开销 每次脚本需要与数据库通信时连接,导致 在更快的网络应用程序中。
这是否意味着我必须写 $dbh = null “关闭”并缓存连接?
【问题讨论】:
-
第一件事:为什么要“最小化连接数”?
-
我的网站上似乎只有几个用户,我的服务器连接数已达到最大。我想将我的网站扩展到可能有数千人,这是否意味着我需要数万个连接才能成为我的极限?考虑到每个访问该网站的人可能会因为打开多个标签而产生 5-10 个连接。
-
对于一个常规站点,一个连接就足够 10 个用户使用了。甚至他们每个人都打开了 5 个标签。你知道 PHP 是如何工作的吗?
-
我不知道 PDO 如何处理连接。我只知道我的网站不会产生太多流量,但建立了很多连接。我正在寻找解决我遇到的问题的方法,而不是居高临下的问题没有任何帮助。
-
另外,我实际上是从这个线程中的评论中得到了这条信息:
@bvpx: The number of connections will depend on how many PHP scripts you expect to be running simultaneously at any given time. I, for example, often click to open a number of pages in different tabs all at once. So, as one user, I could consume maybe 5 database connections. If all users are simultaneously connected to the site (and actively using it), you can hazard your own guess as to the resources required. – eggyal 55 mins ago