2012-03-20 99 views
0

我有2個多語言網站(阿拉伯語和英語)的子網域,1個子網域位於不同的服務器上。在不同服務器上託管的多語言網站的跨域會話

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.example.com頁面的英文頁面。儘管他來自ARABIC界面。

任何建議來解決這個問題,謝謝。

我使用Session來存儲語言。

回答

1

這真的取決於您如何存儲會話數據。在PHP中,默認情況下,數據存儲在本地機器上的文件中。這意味着在每臺機器上,用戶將擁有唯一的,獨特的會話文件。爲了使會話數據真正在兩臺機器上持續存在,它們需要存儲在第三個位置。這可能是Memcached服務器,數據庫等。這樣,當會話在一個位置發生更改時,對於訪問會話數據的所有服務器而言,會發生通用更改。

您可以瞭解更多信息請查看PHP會話處理程序頁面:http://www.php.net/manual/en/book.session.php

您也可以找到關於使用Memcached的作爲你的會話處理這裏的信息:http://php.net/manual/en/memcached.sessions.php

使用PHP它很容易推出自己的以及。我寫了自己的數據存儲在SQL Server數據庫中以處理負載均衡器後面的事情。奇蹟般有效。

+0

ok同意,但服務器administartor無法配置memcache,所以我使用curl調用會話數據在其他服務器上託管的域上進行身份驗證以利用會話數據。正如你理解這個問題,當第二個子域上的會話值發生變化時,它不會普遍更新。感謝您的回覆,任何快速建議來處理它?在目前情況下。 – 2012-03-20 13:45:46

相關問題