1

可能是一个愚蠢的问题,但我无法弄清楚。这是一个概念问题。我有一个网络平台,用户可以在其中存储很多东西,同时有大约 500 个连接。在性能/安全性方面,最好的方法是什么:

  • 每次我需要从中获取数据时(每次他转到另一个页面 BTW)将用户连接到数据库并在我抓取它们后关闭连接?或者
  • 在登录时将用户一次连接到数据库,保持到数据库的链接(如在 $_SESSION 中)并在注销时终止连接?或者
  • 登录时,从用户表中获取几乎所有内容,其配置文件和所有其他配置文件,将它们放入 $_SESSION 并仅在需要更新/插入时连接到数据库?

连接本身很耗时,这就是我寻找最佳方法的原因。但另一方面,我总是听到“总是尽快关闭你的数据库连接”

谢谢你的帮助。

4

1 回答 1

0

我想说这在很大程度上取决于您的特定用例和您的服务器设置。确定的唯一方法是尝试不同的解决方案并分析您的代码。

通常,当您分析您的第一个选择的解决方案时,您会得到有关导致延迟的原因以及等待/处理时间的最大贡献者的提示。这样您就可以更好地猜测下一个(和改进的)解决方案。

通常,延迟评估然后尽可能多地缓存是一种很好的方法。对于 Web 应用程序,诸如 Memcached 或 Redis 等非关系型数据库是一种事实上的标准(至少在我的经验中是这样)。

如果你保持你的数据库连接打开,你应该知道你只能运行你的数据库设置处理的并发查询。尽快关闭连接会降低数据库并发性。如果连接建立引入了很多延迟,也许您应该考虑偶尔抓取所有相关数据并缓存它们。确定的唯一方法是分析您的应用程序。

更新:

感谢您的回复。我将对此进行分析,看看有什么更好的。我会看看 MemCached。我想稍后再看,但我想那是正确的时间。– fperr

一开始我也被 MemCached 推迟了,但它一点也不复杂。它作为(哈希)映射/字典工作,人们通常只是将会话数据保存在 MemCached 实例上,并通过会话 ID 或类似的东西对其进行索引。

祝你的项目好运:)

于 2013-02-12T12:14:04.720 回答