0

我在我的网络应用程序的页面中设置了一个简单的用户登录会话,如下所示:

if (!isset($_SESSION['username'])){
            if (isset($_COOKIE['username'])){   
                $_SESSION['username'] = $_COOKIE['username'];
            }

我开始注意到在某些情况下我会丢失登录会话。我检查了 cookie 的到期时间,这肯定是为将来的日期设置的。该行为是非常随机的,有时复制该操作不会导致问题。

今天我发现 Web 服务器 (x2) 是负载平衡的(我很笨拙,没有意识到这一点),现在我怀疑当用户向没有 cookie 的第二个 Web 服务器发送请求时问题会出现存在。

我原以为当您访问 Web 服务器时,它会与它保持会话。然而,行为表明并非如此。

我还没有和网络管理员谈过。网络管理员可以解决我的问题吗?或者这是一个实施问题?如果是这样,关于如何解决这个问题的任何想法?

非常感谢您的建议。

4

1 回答 1

0

cookie 不关心后端服务器处理请求,除非 url 更改。如果 url 从www1.xxx.xx到更改,www2.xxx.xx那么您可以使用包含的路径 (xxx.xx) 保存 cookie,并且两个子域都可以看到 cookie。

另一件更有可能出错的事情是会话不是在两个服务器之间共享的。您可以为此使用memcached 。

于 2013-06-17T11:59:20.457 回答