我正在阅读Pro Php应用程序性能手册
在“分享会话”一章中,本书建议将会话存储在数据库中。
这让我很好,当你在数据库中存储会话时是否有任何性能影响?
我的意思是数据库已经超载了动态页面的请求,现在还需要处理会话数据。
现在,在每个页面请求中,必须从数据库中读取会话数据。这是一个好主意吗?
答案 0 :(得分:0)
默认情况下,会话数据存储在某个临时文件中(在/tmp/...
中,确保它在网络上不可见!)。如果您的站点获得大量流量并且您拥有优化的数据库或数据库集群,那么将其存储在那里可能是值得的。
在你的情况下,你提到数据库已经紧张,所以它可能不值得。
无论如何,你可以花几分钟时间来实施你的书的解决方案,这并不难。测量性能并亲自看看。
答案 1 :(得分:0)
当您必须为多个网站共享会话存储时,将会话存储在数据库中是一个好主意。如果不是这种情况,请将文件系统存储好。
答案 2 :(得分:0)
当您使用多个应用服务器共享公共数据库时,在数据库中存储会话非常有用,并且您不希望在loadbalancer中放置任何自定义逻辑以重定向请求。 命中DB以获取每个请求的会话(除非您缓存它)将是昂贵的操作。 无论如何,我们总是可以在loadbalancer中有一些逻辑,通过修改会话cookie将请求重定向到适当的app server。 在您的情况下,将会话存储在DB
中不是一个好主意答案 3 :(得分:0)
在数据库中保存会话数据的一个优点是,您可以将其与用户ID,登录时间等元数据相结合。这样可以轻松找到"当前用户X等内容登录?" ,"登录了多少用户?" 等。