5

如果我有一个登录系统或类似的东西,我会在会话中存储一个 session_id 和一个 user_id,但与某个用户有关的任何其他数据都存储在数据库中。我见过人们在会话中存储其他数据(用户名、电子邮件等)的其他脚本。

我只是想知道,哪个会“更好”?将数据保存在数据库中的会话中,还是减少会话并从数据库中获取数据?

谢谢!

4

3 回答 3

3

答案是情况而定,在你的情况下,它甚至可能无关紧要。

会话方法

  • 更少的查询 = 更快

数据库方法

  • 会话中较少的数据可防止破坏
  • 对数据库的更新会立即反映,而不必担心同时更新会话
于 2012-11-06T18:07:55.950 回答
3

您可以将任何您喜欢的信息存储在$_SESSION. 我相信它可以达到 128Mb -memory_limit默认情况下限制是 128Mb。你可以改变这个。

但是,根据经验,我会存储比查询数据库更相关和/或更便宜的信息 - 换句话说,尽可能少

毫无疑问,它会因用途而有很大差异,但通常,会话包含以下内容:

  • 用户名
  • 完整的显示名称
  • 电子邮件地址
  • ID(用户或其他)
  • 权限
  • 用户组
  • 哈希
  • 表单输入错误(暂时突出显示表单错误)

出于速度/规模的原因,不建议存储大块数据/信息。

如果您的站点/平台需要在以后扩展,在正确的时间点,您最好查看直写缓存或类似的常用/必需数据(例如Memcached)并将绝大多数数据存储在你的数据库 - 应该在哪里。

希望这可以帮助。

于 2012-11-06T18:09:51.930 回答
2

实践表明,最好将数据保存在数据库中(对于 >= 中型项目(服务器场/会话中的真正大量数据)或增强任何类型项目的安全性(例如共享主机))。甚至用户 id 也不应该保存在$_SESSION. 散列、闪存消息、快速设置 - 这就是$_SESSION.

但是如果你仍然有一个问题“我需要在数据库中保存会话”那么你很可能不应该将它保存在数据库中。

于 2012-11-06T18:35:50.053 回答