2010年1月7日 星期四

[PHP] SESSION 跨子網域

// 這方法有個缺點
$_SERVER['SERVER_NAME'] 有可能 www.domain.com OR domain.com 所以這改善一下.




ini_set('session.cookie_domain',substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100));

php.ini 設定

1. 以下代碼可以優化如下:
//sessions across subdomains

if (strpos($_SERVER['SERVER_NAME'],".")!==false) {
 ini_set('session.cookie_domain',substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],".")));
}


2.除了設置session的domain外,還需要在所有的服務器上共享session的存儲, 如果session是文件存儲,則所有服務器應共享session存儲目錄,比如通過nfs或san等.

3.將所有服務器的session保存到同一個DB;

3. 或是使用 Memcached

【下列文章您可能也有興趣】

沒有留言: