我目前有一个巨大的问题.两天前,我的网站在一台服务器上运行的太多了,所以我再购买了两台,并将它们集群(rsync和负载平衡).
然后我开始注意到一个用户会打到服务器1,然后在下一个请求命中server3,但是他们的会话仍然在server1而不是server3,并且他们不再登录.
我建议使用会话商店的memcache.
我的脚本已经使用$_SESSION.
>我们可以安装memcache并启用会话处理程序支持,并设置session.save_handler =“memcache”来强制PHP使用memcache?
>是否有任何应用程序编程需要完成使用memcache?
>这会解决我的服务器问题之间的会话吗?
>会话存储在创建时存储在所有服务器上,还是像主内存缓存服务器那样存储?
我正在使用codeiginiter框架
您将需要设置内存缓存以在其中一台服务器上运行,并使所有服务器对会话使用相同的memcache实例.否则,如果他们每个运行自己的memcache实例,你将有与以前相同的问题.
原文链接:https://www.f2er.com/php/139783.html除了相应地配置memcache,并告诉PHP将其用作会话处理程序,您不必对代码进行任何更改.
〜
为了澄清我在这里给出的建议,如果将所有三个服务器组合到一个池中,只要每个PHP实例以相同的顺序引用这些服务器,就不会有任何问题. memcache使用client side hashing,所以您将保证在相同的服务器上读/写相同的密钥.当然,如果您以任何方式更改该列表,则会话将无效.
memcache开发人员实际上甚至不建议您使用memcache存储会话数据,因为它不是持久的,因此如果您必须重新启动内存缓存(或发生某些事情),则所有用户都将被注销.