Redis作为PHP session容器

1 篇文章 0 订阅

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数组序列化后的字符串。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值