框架版本3.1.7php
運行原理redis
框架運行會優先加載config/autoload.php,在該文件中設計模式
$autoload['libraries'] = array('session');
該關聯數組會自動加載對應的 libraries 文件,而後就能夠使用CI進行session設置(存儲)。數組
$sessionData = array( "username" => 'test', "uid" => '1023', "logintime"=> time() ); $this->session->set_userdata($sessionData);
打開框架system\libraries\Session\Session.php文件,源碼中的cookie
__construct(array $params = array())
方法會進行一系列的操做,其中會經過session
_configure(&$params)
這個方法進行配置文件讀取,框架
這些配置參數所有都在config/config.php,參數以下:memcached
$config['sess_driver'] = 'files'; $config['sess_cookie_name'] = 'test_session'; $config['sess_expiration'] = 7200; $config['sess_save_path'] = NULL; $config['sess_match_ip'] = FALSE; $config['sess_time_to_update'] = 300; $config['sess_regenerate_destroy'] = FALSE;
其中sess_driver,在CI中提供了database、file、memcached、redis 四種存儲方式,默認file;測試
sess_cookie_name 這個session名稱能夠根據須要修改成本身須要,默認ci_session,可是這個值會暴露框架信息;ui
sess_expiration session的有效期,默認60*60*2=7200,能夠根據須要修改,或在存儲session是單獨設置有效期;
sess_save_path session的存儲路徑,win環境默認NULL能夠使用,其餘系統須要修改到具體路徑。【猜想只有在sess_driver爲file時須要,其餘的可能用不到】
其餘的參數目前尚未測試。
在每一個驅動文件都會
extends CI_Session_driver implements SessionHandlerInterface
在Session_driver爲
abstract class CI_Session_driver implements SessionHandlerInterface
抽象類,
關於此處使用的設計模式如今還不是很明白,待續………………