在数据库中存储会话,这是一个好主意吗?

时间:2015-02-13 07:54:58

标签: php mysql session

我正在阅读Pro Php应用程序性能手册

在“分享会话”一章中,本书建议将会话存储在数据库中。

这让我很好,当你在数据库中存储会话时是否有任何性能影响?

我的意思是数据库已经超载了动态页面的请求,现在还需要处理会话数据。

现在,在每个页面请求中,必须从数据库中读取会话数据。这是一个好主意吗?

4 个答案:

答案 0 :(得分:0)

默认情况下,会话数据存储在某个临时文件中(在/tmp/...中,确保它在网络上不可见!)。如果您的站点获得大量流量并且您拥有优化的数据库或数据库集群,那么将其存储在那里可能是值得的。

在你的情况下,你提到数据库已经紧张,所以它可能不值得。

无论如何,你可以花几分钟时间来实施你的书的解决方案,这并不难。测量性能并亲自看看。

答案 1 :(得分:0)

当您必须为多个网站共享会话存储时,将会话存储在数据库中是一个好主意。如果不是这种情况,请将文件系统存储好。

答案 2 :(得分:0)

当您使用多个应用服务器共享公共数据库时,在数据库中存储会话非常有用,并且您不希望在loadbalancer中放置任何自定义逻辑以重定向请求。 命中DB以获取每个请求的会话(除非您缓存它)将是昂贵的操作。 无论如何,我们总是可以在loadbalancer中有一些逻辑,通过修改会话cookie将请求重定向到适当的app server。 在您的情况下,将会话存储在DB

中不是一个好主意

答案 3 :(得分:0)

在数据库中保存会话数据的一个优点是,您可以将其与用户ID,登录时间等元数据相结合。这样可以轻松找到"当前用户X等内容登录?" "登录了多少用户?" 等。