【问题标题】:session variables vs database会话变量与数据库
【发布时间】:2011-05-12 04:08:06
【问题描述】:

我正在为我的 uni 工作开发一个网站,它必须允许不同用户的登录访问。我的导师告诉我应该使用会话变量/数组来存储所有用户数据,例如名字、地址等。

在我的设计中,我只有用户 ID 和电子邮件地址(电子邮件用于登录),然后根据需要从数据库中获取数据。他说这会减慢网站速度,因为我正在与数据库进行大量连接。

我应该将所有数据存储在会话变量中还是连接到数据库来访问这些数据?

感谢您的任何建议:)。

【问题讨论】:

    标签: php database session


    【解决方案1】:

    答案取决于您希望通过解决方案获得的“真实世界”程度。在一个真正的高流量站点中,将在多个服务器之间进行负载平衡,数据将存储在数据库中,然后在从数据库中获取数据时使用 memcache 之类的东西缓存一段时间。如果您不需要忘乎所以,那么在会话中进行缓存是完全可以接受的。

    【讨论】:

      【解决方案2】:

      您可以在他们第一次登录时从数据库中获取信息,然后将其保存在会话变量中,直到他们注销或会话超时。如果有许多用户同时登录,在会话变量中保存大量用户数据可能会产生一些开销,但这与进行持续查询不同。

      最好的回答方式可能是询问用户还有多少其他数据,以及在“典型”会话中可能需要多少数据。大多数用户在会话期间需要加载的数据可以在登录时加载。大多数用户在典型会话期间不需要的数据可以按需加载。

      【讨论】:

      • 开销并没有那么大,因为它只是一个查询来获取所有用户配置文件并且可以预期,无论如何您稍后都需要在请求时进行连接。我不认为,它有这么大的不同。
      • 谢谢,我不会不断地查询数据库,只在某些页面上。例如,如果他们想查看存储的关于他们的信息。并非每个页面都需要访问数据库,但每次我检查用户是否已登录时,我都会通过会话和数据库进行检查,对吗?
      • +1 用于在数据库中保留信息,但使用本地值来提高性能。
      • 用户必须能够更新他们的数据,当他们这样做时,会话中保存的数据是否有效?
      • @Elliott:如果正在更新的数据在许多其他地方使用,那么您可能希望将 更新的 数据存储在会话中,之后 它已被持久化到数据库中。始终先持久化,然后然后刷新会话变量/缓存。
      猜你喜欢
      • 2020-01-21
      • 1970-01-01
      • 1970-01-01
      • 2020-08-08
      • 2010-11-11
      • 2011-09-01
      • 2015-04-17
      • 2013-02-01
      • 1970-01-01
      相关资源
      最近更新 更多