session - Yii session 在多服务器中不起作用

标签 session yii

我有 1 个负载平衡服务器和 2 个 Web 服务器:Server1 和 Server2。它们都与数据库服务器连接。 我的问题: 我正在使用 Yii session 来控制 session 。 成功登录Server1后,负载均衡服务器重定向到Server 2 => 它不保留我之前登录的 session (server1)

如何在 Server2 中保持 session

最佳答案

您有几个选择:

1) 如果您的负载均衡器支持,您可以启用 session 持久性,以便用户始终被发送到与他们最初访问的服务器相同的服务器。这样做的好处是,如果您不想更改任何代码,则可以轻松设置。缺点是,如果其中一台服务器出现故障,您将丢失该节点上的所有 session 。

2) 在node1 和node2 之间设置共享memcache(不是memcached) session 。相关设置如下。

php.ini

session.save_handler memcache
session.save_path tcp://<ip1>, tcp://<ip2>

memcache.ini

memcache.allow_failover 1
memcache.default_port   11211
memcache.hash_strategy  standard
memcache.max_failover_attempts  20

设置起来有点棘手,但是一旦你让它工作起来,如果其中一台服务器出现故障,你就可以在两台服务器之间实现完全冗余。

3) 设置第三个节点来管理 session 并将 php session.save_path 配置为该服务器的 IP。这样做的好处是 session 现在由第三台服务器管理。缺点是您会失去冗余,如果该服务器出现故障,您就会丢失 session 。

关于session - Yii session 在多服务器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18627999/

相关文章:

YII 使用 gzip 压缩你的应用输出

php - 如何阻止某人返回上一页?

php - 仅在 session 不存在时才加载 session_start()?

session - Google Analytics 用户指标是否等同于 Webtrends Analytics 访问者指标?

php - php 中的安全 session /cookie

php - CForm 及其行为没有名为 "beginWidget"的方法或闭包

c# - HttpContext.Current.Session 在 Ashx 文件中为空

php - 如何将变量传递给布局?

php - xsendFile 下载有 0 个字节

php - 不支持 Yii FULLTEXT,但绝对支持