Php 如何使用Amazon Web服务(AWS)同步会话?
我们正在使用AmazonWebServices(AWS),我们有多个Web服务器和一个负载平衡器。web服务器的问题是,$\u会话对于每个服务器都是唯一的。我在$\u会话中保留了一些有关用户的信息Php 如何使用Amazon Web服务(AWS)同步会话?,php,session,amazon-ec2,amazon-web-services,amazon-elb,Php,Session,Amazon Ec2,Amazon Web Services,Amazon Elb,我们正在使用AmazonWebServices(AWS),我们有多个Web服务器和一个负载平衡器。web服务器的问题是,$\u会话对于每个服务器都是唯一的。我在$\u会话中保留了一些有关用户的信息 同步此信息的正确方法是什么?是否有任何方法可以将保存这些会话的地方统一起来,或者我应该使用MySQL来存储这些数据(我真的不喜欢最后一个选项)?虽然概念上与您出于某种原因试图避免使用的MySQL选项类似,但最近引入了一个非常吸引人的选项,它解决了PHP中典型的会话处理是不可伸缩的,因此无论如何都需要某
同步此信息的正确方法是什么?是否有任何方法可以将保存这些会话的地方统一起来,或者我应该使用MySQL来存储这些数据(我真的不喜欢最后一个选项)?虽然概念上与您出于某种原因试图避免使用的MySQL选项类似,但最近引入了一个非常吸引人的选项,它解决了PHP中典型的会话处理是不可伸缩的,因此无论如何都需要某种自定义解决方案: 会话用于跨多个HTTP保存短期数据 请求[…]PHP的本机会话处理程序存储 将会话数据传输到本地文件系统;然而,这种方法变得越来越重要 分布式web应用程序中不可靠。在随后的请求中 用户可能无法路由到同一服务器,从而导致数据丢失 实际上被遗忘了。用户将被注销并感到困惑 为了克服这个问题,PHP开发人员已经实现了定制 使用数据库存储用户会话数据的解决方案, 共享文件系统、Memcache服务器、防篡改cookie和其他 存储机制。[…][我的重点]
根据您的使用情况,您可能希望相应地尝试一下这个可能非常快速的会话存储。我认为您需要的是“粘性会话”。如果我是对的,亚马逊给你两种不同的选择 负载平衡器(基于持续时间,我建议使用这种) 和基于应用程序的会话粘性
为了补充上述答案,您需要一个分布式缓存,比如DynamoDB,它是一个付费的亚马逊服务。它的使用速度惊人且非常出色,但是如果您正在寻找其他开源替代方案,您可以查看以下内存读/写选项
为什么要避免将会话存储在数据库中(特别是MySQL)?因为我们的产品已经准备好了,我们只需要扩展它。改变它现在的工作方式将需要改变网站的核心,这将需要时间和在多个地方的变化,所以我们试图找到最简单的解决方案,这将几乎不需要改变。