【CI】閱讀源碼整理(一)session

框架版本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

抽象類,

 

關於此處使用的設計模式如今還不是很明白,待續………………

相關文章
相關標籤/搜索