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 格式化数字的时候注意数字的范围
Apr 13 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
基于php-fpm 参数的深入理解
Jun 03 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
Sep 26 PHP
PHP加Nginx实现动态裁剪图片方案
Mar 10 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
Jan 13 PHP
PHP实现获取某个月份周次信息的方法
Aug 11 PHP
PHP防盗链的基本思想 防盗链的设置方法
Sep 25 PHP
php中删除、清空session的方式总结
Oct 09 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
什么是PHP7中的孤儿进程与僵尸进程
Apr 14 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 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
PHP 网站修改默认访问文件的nginx配置
2017/05/27 PHP
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
得到jQuery detach()后节点中的某个值实现代码
2013/02/05 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
JS跨域问题详解
2014/11/25 Javascript
JavaScript操作Oracle数据库示例
2015/03/06 Javascript
如何判断Javascript对象是否存在的简单实例
2016/05/18 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
利用JQUERY实现多个AJAX请求等待的实例
2017/12/14 jQuery
React全家桶环境搭建过程详解
2018/05/18 Javascript
小程序实现搜索框
2020/06/19 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
jQuery实现朋友圈查看图片
2020/09/11 jQuery
uniapp电商小程序实现订单30分钟倒计时
2020/11/01 Javascript
python原始套接字编程示例分享
2014/02/21 Python
Python函数嵌套实例
2014/09/23 Python
《Python之禅》中对于Python编程过程中的一些建议
2015/04/03 Python
Python多进程multiprocessing.Pool类详解
2018/04/27 Python
Python3.5面向对象程序设计之类的继承和多态详解
2019/04/24 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Python无损压缩图片的示例代码
2020/08/06 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
西班牙高科技产品购物网站:MejorDeseo
2019/09/08 全球购物
美国知名的隐形眼镜电商:Contacts America
2019/11/19 全球购物
大学毕业感言一句话
2014/02/06 职场文书
2019年朋友圈经典励志语录50条
2019/07/05 职场文书
JavaScript函数柯里化
2021/11/07 Javascript
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
python开发制作好看的时钟效果
2022/05/02 Python
让JavaScript代码更加精简的方法技巧
2022/06/01 Javascript