ThinkPHP自定义Redis处理SESSION的实现方法


Posted in PHP onMay 16, 2016

本文实例讲述了ThinkPHP自定义Redis处理SESSION的实现方法。分享给大家供大家参考,具体如下:

日常中我们都会使用到session来保存用户登录的信息,常用的session的保存方式有:文件保存(默认)、数据库保存、Redis保存、memcached等。这里主要记录一下在用ThinkPHP处理session用Redis来保存session的用法。

1.在配置项中定义:

'SESSION_TYPE' => 'Redis', //session保存类型
'SESSION_PREFIX' => 'sess_', //session前缀
'REDIS_HOST' => '127.0.0.1' //REDIS服务器地址
'REDIS_PORT' => 6379, //REDIS连接端口号
'SESSION_EXPIRE' => 3600, //SESSION过期时间

可以ThinkPHP/Common/functions.php文件中找到定义session的方法,大约在1179行左右读取session驱动的判断。如果我们定义了配置项SESSION_TYPE,则会new一个Redis对象并调用会话存储函数session_set_save_handler()。

2.在ThinkPHP\Library\Think\Session\Driver目录下新建Redis.class.php文件

文件内容如下:

<?php
namespace Think\Session\Driver;
class Redis {
//  Redis连接对象
  private $redis;
//  Session过期时间
  private $expire;
  /**
   * 打开方法
   * @param type $path
   * @param type $name
   * @return type
   */
  public function open($path, $name) {
  $this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxLifetime');
  $this->redis = new Redis();
  return $this->redis->connect(C('REDIS_HOST'), C('REDIS_PORT'));
  }
  /**
   * 关闭
   * @return type
   */
  public function close() {
  return $this->redis->close();
  }
  /**
   * 读取
   * @param string $id
   * @return type
   */
  public function read($id) {
  $id = C('SESSION_PREFIX') . $id;
  $data = $this->redis->get($id);
  return $data ? $data : '';
  }
  /**
   * 写入
   * @param string $id
   * @param type $data
   * @return type
   */
  public function write($id, $data) {
  $id = C('SESSION_PREFIX') . $id;
  return $this->redis->set($id, $data, $this->expire);
  }
  /**
   * 销毁
   * @param string $id
   */
  public function destroy($id) {
  $id = C('SESSION_PREFIX') . $id;
  $this->redis->delete($id);
  }
  /**
   * 垃圾回收
   * @param type $maxLifeTime
   * @return boolean
   */
  public function gc($maxLifeTime) {
  return true;
  }
}

至此就完成了Redis对session的处理。

memcached的方法和Redis差不多一样!

PHP 相关文章推荐
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
FastCGI 进程意外退出造成500错误
Jul 26 PHP
php实现简易聊天室应用代码
Sep 23 PHP
Symfony2使用Doctrine进行数据库查询方法实例总结
Mar 18 PHP
php自动加载方式集合
Apr 04 PHP
PHP对XML内容进行修改和删除实例代码
Oct 26 PHP
thinkPHP内置字符串截取函数用法详解
Nov 15 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
Nov 17 PHP
PHP中的empty、isset、isnull的区别与使用实例
Mar 22 PHP
PHP命令行与定时任务
Apr 01 PHP
Yii2 GridView实现列表页直接修改数据的方法
May 16 #PHP
ThinkPHP3.2.2实现持久登录(记住我)功能的方法
May 16 #PHP
php metaphone()函数的定义和用法
May 15 #PHP
php图片上传类 附调用方法
May 15 #PHP
php简单的上传类分享
May 15 #PHP
分享php多功能图片处理类
May 15 #PHP
非常经典的PHP文件上传类分享
May 15 #PHP
You might like
php self,$this,const,static,-&amp;gt;的使用
2009/10/22 PHP
php class中public,private,protected的区别以及实例分析
2013/06/18 PHP
Drupal7中常用的数据库操作实例
2014/03/02 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
PHP数组与字符串互相转换实例
2020/05/05 PHP
javascript之水平横向滚动歌词同步的应用
2007/05/07 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
js中常用的Tab切换效果(推荐)
2016/08/30 Javascript
jQuery用FormData实现文件上传的方法
2016/11/21 Javascript
解析Javascript单例模式概念与实例
2016/12/05 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
2017/02/20 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
Vue完整项目构建(进阶篇)
2018/02/10 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
原生JS实现$.param() 函数的方法
2018/08/10 Javascript
基于AngularJS拖拽插件ngDraggable.js实现拖拽排序功能
2019/04/02 Javascript
原生js实现无缝轮播图效果
2021/01/28 Javascript
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
查看Python依赖包及其版本号信息的方法
2019/08/13 Python
使用python matploblib库绘制准确率,损失率折线图
2020/06/16 Python
keras.layer.input()用法说明
2020/06/16 Python
Python-openpyxl表格读取写入的案例详解
2020/11/02 Python
澳大利亚百货商店中销量第一的商务衬衫品牌:Van Heusen
2018/07/26 全球购物
中国旅游网站:途牛旅游网
2019/09/29 全球购物
学员自我鉴定
2014/03/19 职场文书
2014年五四青年节活动方案
2014/03/29 职场文书
副总经理任命书
2014/06/05 职场文书
2015年乡镇卫生院工作总结
2015/04/22 职场文书
离婚律师函范本
2015/05/27 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书