0

在我的网站上,当用户打开他的个人资料或任何其他页面时(几乎所有页面都使用来自 mysql 的数据),我的网站在加载页面时与 mysql 建立了大约 50 个连接。在我的开发服务器上就是这种情况,运行基本操作系统。

当我开始了解mysql中的持久连接时,我感到很困惑。如果我要在 VPS 上运行这个网站(启动时 RAM 较低),并且考虑到大量 mysql 连接产生的开销,使用持久连接会提高我的网站的性能吗?

目前,我在每个函数中开始和结束一个连接。有没有更好的连接mysql的方法?

而且,考虑到如果 100 个用户同时使用我的网站,如果每个页面建立大约 50-60 个连接,性能会如何?

4

2 回答 2

1

你问所以我会回答。你这样做不正确。您应该通过使用通用函数来建立单个数据库连接来开始处理每个页面请求(每个外部可访问的 .php 文件),然后您应该重用该连接。

因为您可能正在使用内置到您的 php 数据库访问库中的自动连接池,并且因为您还没有扩展您的应用程序,所以您可以摆脱这种情况。

使用这种多连接策略,您将无法将其扩展得很远,因为当您添加用户时,它的性能确实很差。

您可以查看许多基于 php 的开源 Web 应用程序系统的示例。WordPress 就是一个例子。您会发现它们中的大多数都是从打开数据库连接并将其句柄存储在全局变量中开始的。

您问:

根据CBroe的评论,我改变了我的策略。实际上,我使用了多个数据库连接,但功能是相同的(不要问为什么大声笑)。因此,如果我在启动时打开连接,然后将处理程序传递给函数,那会是一种改进吗?

是的,那会很好。您需要避免搅动连接以获得最佳性能。

如果您需要连接到多个不同的数据库,您可以将它们全部打开。但听起来您只需要访问一个数据库。

将处理程序传递给函数时,PHP 没有显着的开销,所以不用担心。

于 2014-05-10T18:22:39.027 回答
0

正如 Ollie Jones 所解释的那样,我在开始时打开了连接,我的连接从每页 50-60 个下降到每页 1 个。虽然我在本地开发服务器上看不到任何性能变化,但当它在实时服务器上时,这肯定会给我们带来很大的改进。我还没有必要使用持久连接。

于 2014-05-10T19:44:29.540 回答