托管在不同服务器上的多语言网站的跨域会话


Cross domain session for multilingual site hosted on different server

我有两个多语言网站的子域(阿拉伯语和英语),一个子域在不同的服务器上。

member.example.com for centralizer login on SERVER1
video.example.com for videos on another server SERVER2

我使用:

session_name('example');
session_set_cookie_params(0, '/', '.example.com');
session_start();

两个子域上的所有会话数据都可用,但问题在于语言。

如果用户打开video.example.com并将语言更改为ARABIC并访问member.example.com,他将看到member.exexample.com的英文页面。尽管他来自ARABIC界面。

任何解决此问题的建议,谢谢。

我使用会话来存储语言。

这实际上取决于如何存储会话数据。在PHP中,默认情况下,数据存储在本地机器上的一个文件中。这意味着在每台机器上,用户都有一个唯一的、不同的会话文件。为了使会话数据真正在两台机器上持久存在,它们需要存储在第三个位置。这可以是Memcached服务器、数据库等。这样,当会话在一个位置发生更改时,所有访问会话数据的服务器都会发生普遍更改。

您可以查看php会话处理程序页面了解更多信息:http://www.php.net/manual/en/book.session.php

您也可以在这里找到有关使用Memcached作为会话处理程序的信息:http://php.net/manual/en/memcached.sessions.php

使用PHP,也可以很容易地推出自己的。我编写了自己的程序,将数据存储在SQL Server数据库中,以处理负载均衡器后面的事情。工作起来很有魅力。