我们正在使用Amazon Web Services(AWS),我们有多个Web服务器和负载均衡器。 Web服务器的问题是,$ _SESSION对于每个服务器都是唯一的。我在$ _SESSION中保留了一些关于用户的信息。
同步此信息的正确方法是什么?有没有办法联合这个地方,那些会话被保存,或者我应该使用MySQL来存储这些数据(我真的不喜欢最后一个选项)?
答案 0 :(得分:7)
我认为你所寻找的是'Sticky Sessions'。如果我是对的,亚马逊为您提供两种不同的选择。
负载均衡器(基于持续时间,我推荐这个)http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/US_StickySessions.html#US_EnableStickySessionsLBCookies
答案 1 :(得分:4)
虽然在概念上类似于您试图避免出于某种原因的MySQL选项,但在Amazon Web Services (AWS)中使用的一个非常吸引人的选项是最近引入的Scalable Session Handling in PHP Using Amazon DynamoDB,它解决了典型会话处理在PHP中不可扩展,因此无论如何都需要某种自定义解决方案:
会话用于跨多个HTTP保留短期数据 要求 [...]。 PHP的本机会话处理程序存储 会话数据到本地文件系统;然而,这种方法变成了 在分布式Web应用程序中不可靠。在随后的请求中 用户可能无法路由到导致数据的同一服务器 有效地忘记了。用户将被注销并感到困惑。
为了解决这个问题,PHP开发人员实现了自定义 解决方案用于使用数据库存储用户的会话数据 共享文件系统,Memcache服务器,防篡改cookie等 存储机制。 [...] [强调我的]
根据您的使用情况,您可能需要相应地尝试这个可能非常快的会话存储。
答案 2 :(得分:1)
要添加上面的答案,您要寻找像DynamoDB这样的分布式缓存,这是一项付费的亚马逊服务。它使用起来非常快速和出色,但如果您正在寻找其他一些开源替代品,您可以查看以下内存读/写选项。