当前位置:首页 > 资讯 > info5 > 正文

Redis作为PHP session容器

发表于: 2015-12-24   作者:alian_c   来源:转载   浏览:
摘要: Redis作为PHPsession容器关于session_start()在php使用session需要先调用session_start()函数,session_start()会做下面几件事:CreatedwithRaphaël2.1.0session_start()$_COOKIE[session]?通过session.save_path读取session文件将Session文件反序列化为关联数组

Redis作为PHP session容器

关于session_start()

在php使用session需要先调用session_start()函数,session_start()会做下面几件事:

Created with Raphaël 2.1.0 session_start() $_COOKIE[session]? 通过session.save_path读取session文件 将Session文件反序列化为关联数组$_SESSION End 创建Session文件 设置Cookie yes no

默认情况下,php将session保存在文件中,存放路径可在php.ini中的session.save_path路径设置。

PHP提供的session_set_save_handler函数允许开发者将session保存不在不同的容器中:mysql, redis

将session存到Redis

修改php.ini

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

ini_set()

ini_set("session.save_handler", "redis");
init_set("session.save_path", "tcp://127.0.0.1:6379");

SessionHandlerInterface

PHP5.4版本提供了一个SessionHandlerInterface接口,用来实现session handler。

class RedisSessionHandler implements SessionHandler{
    public function __constructor(){
        $this->redis = new Redis();
    }

    //下面的方法还需要具体实现
    public bool close (void){

    }
    public bool destroy ($session_id ){

    }
    public bool gc (maxlifetime ){

    }
    public bool open ($save_path, $name ){

    }
    public string read ($session_id ){

    }
    public bool write ($session_id, $session_data ){

    }
}

$handler = new RedisSessionHandler();
session_set_save_handler($handler, true);
session_start();

上面说到,默认情况下session文件存放在session.save_path指定的目录下,文件名为session_name():session_id()的文件。在Redis中,session被存为key为session_name():session_id()的String类型, 内容为$_SESSION数组序列化后的字符串。

Redis作为PHP session容器

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
(1)准备 A. 安装好redis https://github.com/MSOpenTech/redis 注意:下载release版 启动脚本如下
(1)准备 A. 安装好redis https://github.com/MSOpenTech/redis 注意:下载release版 启动脚本如下
原文地址:http://ifeve.com/redis-lru/ 如果你使用redis作为缓存,当添加新数据时,若有内存大小等
针对之前的nginx+tomcat的负载均衡机制,因为会出现session丢失的问题,特研究了下redis的session共
如图,php的session id存在cookie中,过期时间为会话结束时(关闭浏览器)。关闭浏览器,cookies被
如图,php的session id存在cookie中,过期时间为会话结束时(关闭浏览器)。关闭浏览器,cookies被
一般作为容器的div层 要设置水平居中 所以有 margin-right: auto; margin-left: auto; 如果不设置宽
http://www.iyunv.com/thread-52670-1-1.html 一、redis简介 Redis是一个key-value存储系统。和Memc
一、redis简介 Redis是一个key-value存储系统。和Memcached类似,为了保证效率,数据都是缓存在内存
原文链接 译者:flychao88 当用Redis作为一个LRU存储时,有些时候是比较方便的,在你增添新的数据时
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号