在項目實施過程當中,每每把一個大項目進行分拆成幾個獨立的項目,項目用徹底獨立的域名和文件,能夠放到不一樣的服務器上的獨立分項目php
yii2就能夠這樣進行web
譬如 作一個電子商務系統, 服務器
1.產品,分類,首頁使用域名 : www.domain.comyii2
2.帳戶中文使用域名:account.domain.comcookie
3.購物車頁面使用域名:cart.domain.comsession
4.下單頁面使用域名:checkout.domain.comdom
分拆成4個域名子項目yii
這樣就須要在二級域名之間進行session共享同步測試
在yii2中,本人測試過,能夠經過設置網站
ini_set("session.cookie_domain","intosmile.es");
在兩個項目的index.php添加cookie_domain,就能夠進行session共享
兩個徹底獨立的yii2是可使用yii中的session讀取的
注意配置
'request' => [
'class' => 'common\web\Request',
'enableCookieValidation' => true,
'enableCsrfValidation' => true,
'cookieValidationKey' => 'O1d232trde1x-M97_7QvwPo-5QGdkLMp#@#@',
'noCsrfRoutes' => [
'catalog/product/addreview',
'favorite/product/remark',
'paypal/ipn/index',
'paypal/ipn',
],
],
'cookieValidationKey' => 'O1d232trde1x-M97_7QvwPo-5QGdkLMp#@#@'
這句,這個cookie須要是同樣的,固然這個,我沒有測試,應該是須要同樣的,若是session不能讀取共享,就設置這裏。這個是cookie生成的key。
這種好處是項目分拆,徹底獨立,能夠同步進行,不少電商網站都是採起這種方式進行項目的維護。
參考代碼:
1.利用COOKIE存放session_id();
實例:
域名一文件php代碼:
<?php
session_start();
setcookie("session_id",session_id(),time()+3600*24*365*10,"/",".session.com");
$_SESSION['user_name'] = '梁山良民';
echo $_SESSION['user_name'];
?>
域名二文件php代碼:
<?php
session_destroy();
session_id($_COOKIE['session_id']);
session_start();
echo $_SESSION['user_name'];
?>
2.利用php.ini 的session.cookie_domain
備註:這裏是用php代碼實現不須要修改php.ini的配置文件;若是有須要你能夠在php.ini裏面修改配置文件(該狀況下就不須要改段代碼:ini_set("session.cookie_domain",'session.com');)
實例:
域名一文件php代碼:
<?php
ini_set("session.cookie_domain",'session.com');//注:該參數必須在sesson_start()之上,不然將不會生效
session_start();
$_SESSION['user_name'] = '梁山良民';
echo $_SESSION['user_name'];
?>
域名二文件php代碼:
<?php
ini_set("session.cookie_domain",'session.com');
session_start();
echo $_SESSION['user_name'];
?>
後期遇到問題須要特別說明哈,嘿嘿!
第一:ini_set("session.cookie_domain",'session.com');必須放在session_start()以前;
第 二:在某些網站測試的時候必須得注意,或許你本地沒有問題,可是在其餘機器上或者服務器上有問題,那麼你須要檢查 哈,ini_set("session.cookie_domain",'session.com');這個中的session.com中必須與你的域名 進行真實匹配!否則你的部分session值將會出現問題的!