我有两个多语言网站的子域(阿拉伯语和英语),一个子域在不同的服务器上。
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数据库中,以处理负载均衡器后面的事情。工作起来很有魅力。