首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用memcache作为会话存储?

使用memcache作为会话存储?
EN

Stack Overflow用户
提问于 2010-10-07 18:56:56
回答 7查看 18.2K关注 0票数 12

我现在有个大问题。两天前,我的站点在一台服务器上运行得太多了,所以我又购买了两台,并让它们集群(rsync和load balanced)。

然后,我开始注意到,用户将访问服务器-1,然后在下一个请求中访问server3,但是他们的会话仍然在server1上而不是server3上,并且他们不再登录。

建议我将memcache用于会话存储。

我的脚本已经使用了$_SESSION

  • 我们能否安装memcache并启用会话处理程序支持,并将session.save_handler = "memcache"设置为强制php使用memcache?
  • 是否有任何应用程序编程需要进行使用memcache?
  • 这能解决我在服务器之间的会话问题吗?
  • 会话存储是在创建服务器时存储在所有服务器上,还是与主内存缓存服务器类似?

我使用的是码器框架

EN

Stack Overflow用户

回答已采纳

发布于 2010-10-07 19:11:57

您需要设置memcache以在其中一个服务器上运行,并让所有服务器为会话使用相同的memcache实例。否则,如果它们各自运行自己的memcache实例,您将遇到与前面相同的问题。

除了相应地配置memcache并告诉PHP使用它作为会话处理程序之外,您不应该对代码进行任何更改。

~

为了澄清我在这里给出的建议,如果将所有三个服务器分组到一个池中,那么只要每个PHP实例以相同的顺序引用这些服务器,就不会有任何问题。memcache使用客户端散列,因此可以保证在同一台服务器上读取/写入相同的密钥。当然,如果您以任何方式更改该列表,则会话将变得无效。

memcache开发人员甚至不建议您使用memcache来存储会话数据,因为它不是持久的,因此,如果您必须重新启动memcache (或者发生了什么事情),那么您的所有用户都将被注销。

票数 2
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3884905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档