负载均衡web服务器上的PHP cookie


php cookies on load balanced web servers

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

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

我开始注意到,在某些情况下,我会失去我的登录会话。我检查了cookie的过期时间,这肯定是为将来的日期设置的。该行为是相当随机的,有时复制该动作不会引起问题。

今天我发现web服务器(x2)是负载均衡的(我笨手笨脚的没有捡到这一点),现在我怀疑当用户向第二个web服务器发送请求时,cookie不存在,这个问题就会爆发。

我本以为当你击中一个web服务器时,它会与它保持会话。然而,行为却表明情况并非如此。

我还没有和网络管理员说过话。有一个神奇的解决方案,网络管理员可以整理我吗?或者这是一个实现问题?如果是这样,我该如何解决这个问题?

欢迎指教

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

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