php的session原理?
客戶端訪問php頁面,執行session_start,生成session_id,一般我們是把session_id存儲到cookie上,session內容保存在服務端,
客戶端訪問訪問不同的頁面都會把session_id傳到服務端,通過session_id來獲取session內容。
流程是這樣,可是不同的服務器會對同一個客戶端產生不同的session_id,這樣的話不同服務器就不能得到相同的session內容。
而且PHP 默認的 SESSION 數據都是分別保存在本服務器的文件系統中。
所以我們要解決session共享,就必須解決兩個問題:
1. 多臺服務器用同一個session_id
1 這個比較容易解決,只要在php中設置存session_id的cookie域名為網站主域就可以 2 打開PHP.ini, 設置session.cookie_domain = .feiniu.com, 3 當然也可以在php代碼當中設置ini_set("session.cookie_domain","feiniu.com");
2. 多臺服務器用同一個session_id訪問到相同的session內容
1 要實現這點,就必須把session內容存儲到讓所有服務器都能訪問到的地方,php的session內容是默認存儲到本服務器的文件中的, 2 一般的解決方案是存入數據庫,memcache或者redis這種緩存服務器,當然用默認的文件存儲方式也可以,用NFS統一存儲。