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 相关文章推荐
php join函数应用
May 04 PHP
php邮件发送的两种方式
Apr 28 PHP
PHP实现批量上传单个文件
Dec 29 PHP
PHP Filter过滤器全面解析
Aug 09 PHP
php下载文件,添加响应头的简单实例
Sep 22 PHP
php表单加入Token防止重复提交的方法分析
Oct 10 PHP
PHP简单判断iPhone、iPad、Android及PC设备的方法
Oct 11 PHP
Laravel使用消息队列需要注意的一些问题
Dec 13 PHP
php语言注释,单行注释和多行注释
Jan 21 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
Apr 24 PHP
PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
May 31 PHP
PHP单文件上传原理及上传函数的封装操作示例
Sep 02 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
Mysql的常用命令
2006/10/09 PHP
10条PHP编程习惯助你找工作
2008/09/29 PHP
PHP安全配置详细说明
2011/09/26 PHP
关于PHP递归算法和应用方法介绍
2013/04/15 PHP
laravel 数据迁移与 Eloquent ORM的实现方法
2019/04/12 PHP
一个背景云变换js特效 鼠标移动背景云变化
2012/12/28 Javascript
js正则表达式的使用详解
2013/07/09 Javascript
jcrop基本参数一览
2013/07/16 Javascript
js函数在frame中的相互调用详解
2014/03/03 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
JavaScript数组去重的3种方法和代码实例
2015/07/01 Javascript
Bootstrap实现带动画过渡的弹出框
2016/08/09 Javascript
jQuery插件HighCharts绘制的基本折线图效果示例【附demo源码下载】
2017/03/07 Javascript
在vue2.0中引用element-ui组件库的方法
2018/06/21 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
Python爬取附近餐馆信息代码示例
2017/12/09 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python设定并获取socket超时时间的方法
2019/01/12 Python
python贪吃蛇游戏代码
2020/04/18 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
Python并发concurrent.futures和asyncio实例
2020/05/04 Python
python3 使用openpyxl将mysql数据写入xlsx的操作
2020/05/15 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
html5本地存储 localStorage操作使用详解
2016/09/20 HTML / CSS
HTML文本属性&amp;颜色控制属性的实现
2019/12/17 HTML / CSS
物业保安员岗位职责
2014/03/14 职场文书
蟋蟀的住宅教学反思
2014/04/26 职场文书
中班下学期个人总结
2015/02/12 职场文书
教师思想工作总结2015
2015/05/13 职场文书
建国70周年的心得体会(2篇)
2019/09/20 职场文书
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis