我现在有个大问题。两天前,我的站点在一台服务器上运行得太多了,所以我又购买了两台,并让它们集群(rsync和load balanced)。
然后,我开始注意到,用户将访问服务器-1,然后在下一个请求中访问server3,但是他们的会话仍然在server1上而不是server3上,并且他们不再登录。
建议我将memcache用于会话存储。
我的脚本已经使用了$_SESSION。
session.save_handler = "memcache"设置为强制php使用memcache?我使用的是码器框架
发布于 2010-10-07 19:11:57
您需要设置memcache以在其中一个服务器上运行,并让所有服务器为会话使用相同的memcache实例。否则,如果它们各自运行自己的memcache实例,您将遇到与前面相同的问题。
除了相应地配置memcache并告诉PHP使用它作为会话处理程序之外,您不应该对代码进行任何更改。
~
为了澄清我在这里给出的建议,如果将所有三个服务器分组到一个池中,那么只要每个PHP实例以相同的顺序引用这些服务器,就不会有任何问题。memcache使用客户端散列,因此可以保证在同一台服务器上读取/写入相同的密钥。当然,如果您以任何方式更改该列表,则会话将变得无效。
memcache开发人员甚至不建议您使用memcache来存储会话数据,因为它不是持久的,因此,如果您必须重新启动memcache (或者发生了什么事情),那么您的所有用户都将被注销。
https://stackoverflow.com/questions/3884905
复制相似问题