php – 使用memcache作为会话存储?

我目前有一个巨大的问题.两天前,我的网站在一台服务器上运行的太多了,所以我再购买了两台,并将它们集群(rsync和负载平衡).

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

我建议使用会话商店的memcache.

我的脚本已经使用$_SESSION.

>我们可以安装memcache并启用会话处理程序支持,并设置session.save_handler =“memcache”来强制php使用memcache?
>是否有任何应用程序编程需要完成使用memcache?
>这会解决我的服务器问题之间的会话吗?
>会话存储在创建时存储在所有服务器上,还是像主内存缓存服务器那样存储?

我正在使用codeiginiter框架

您将需要设置内存缓存以在其中一台服务器上运行,并使所有服务器对会话使用相同的memcache实例.否则,如果他们每个运行自己的memcache实例,你将有与以前相同的问题.

除了相应地配置memcache,并告诉PHP将其用作会话处理程序,您不必对代码进行任何更改.

为了澄清我在这里给出的建议,如果将所有三个服务器组合到一个池中,只要每个PHP实例以相同的顺序引用这些服务器,就不会有任何问题. memcache使用client side hashing,所以您将保证在相同的服务器上读/写相同的密钥.当然,如果您以任何方式更改该列表,则会话将无效.

memcache开发人员实际上甚至不建议您使用memcache存储会话数据,因为它不是持久的,因此如果您必须重新启动内存缓存(或发生某些事情),则所有用户都将被注销.

相关文章

文章浏览阅读8.4k次,点赞8次,收藏7次。SourceCodester Onl...
文章浏览阅读3.4k次,点赞46次,收藏51次。本文为大家介绍在...
文章浏览阅读1.1k次。- php是最优秀, 最原生的模板语言, 替代...
文章浏览阅读1.1k次,点赞18次,收藏15次。整理K8s网络相关笔...
文章浏览阅读1.2k次,点赞22次,收藏19次。此网络模型提供了...
文章浏览阅读1.1k次,点赞14次,收藏19次。当我们谈论网络安...