多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] * * * * * ## 1 文件 tp5的缓存驱动目录thinkphp\library\think\session\driver\ 通过继承[SessionHandler](http://php.net/manual/en/class.sessionhandler.php)实现session数据服务器保存 包含以下**3种** * * * * * 1 Memcache.php Memcache保存session 2 Memacached.php Memached保存session 3 Redis.php Redis保存session * * * * * ## 2 session驱动解析 > 1 session配置 配置文件convetion.php中设置 ~~~ 'session' => [ 'id' => '', 'var_session_id' => '', // SESSION_ID的提交变量,解决flash上传跨域 'prefix' => 'think', 'type' => '', 'auto_start' => true, ], ~~~ > 2 session初始化 thinkphp\library\think\Session.php的init() ~~~ if (!empty($config['type'])) { $class = (!empty($config['namespace']) ? $config['namespace'] : '\\think\\session\\driver\\') . ucwords($config['type']); if (!class_exists($class) || !session_set_save_handler(new $class($config))) { throw new \think\Exception('error session handler', 11700); } } ~~~ 分析可知使用type选择不同的session驱动,通过session_set_save_handler()注册不同session驱动 ## 3 session驱动接口 1 `public function __construct($config = []){}` session驱动构造函数 > $config:session配置 2 public function open($savePath, $sessName){} session打开函数 > $savePath:session保存路径 $sessName:无效参数?? 3 `public function close(){}` session关闭函数 4`public function read($sessID){}` session读取函数 > $sessID:sessionID 5 `public function write($sessID, $sessData){}` session写入函数 > $sessID:sessionID > $sessData:session数据 6 `public function destroy($sessID){}` session删除函数 > $sessID:sessionID 7 `public function gc($sessMaxLifeTime){}` session定时回收 ## 4 总结 1 session配置 > convention.php文件 2 session初始化 > Session::init() 3 session接口 > open() > close() > read() > write() > destroy() > gc()