负载均衡服务器中的PHP SESSION不同(不同步)?

时间:2013-07-26 10:42:23

标签: php apache session session-cookies load-balancing

刚搬到AWS并启动了2个RHEL服务器,负载均衡。并安装了Apache和PHP。就这样。第二个甚至是第一台服务器的图像。

但突然我才注意到PHP $_SESSION变量不是同步的。各有所不同。

我跑完之后:

<?php
session_start();

if ( $_GET["setvalue"] ) {
    $_SESSION["sess_test"] = $_GET["setvalue"];
}

echo "session value: ".$_SESSION["sess_test"];
?>

然后我分配如下:

在我分配会话值后,一次又一次地刷新(当然通过删除“?setvalue=hello”部分),每当我刷新时,同一页面显示2x个不同的值(因为我有两个负载平衡的服务器)

一个显示:

  • 会话值:hello

下一次显示:

  • 会话价值:

在我再次给出不同的值之后,只有一个点击服务器显示最后一个值,而其他服务器仍未使用最后一个值进行更新。

任何想法请? :(

1 个答案:

答案 0 :(得分:2)

如果您使用默认的基于文件的会话存储引擎,那么自然而言,您无法对它们进行负载平衡(至少,不能使用某种stickiness)。

您需要的是会话的集中存储,例如使用databasememcache

另见PHP sessions in a load balancing cluster - how?