<?php
/**
* Created by PhpStorm.
* User: mike
* Date: 2020-08-04
* Time: 23:41
*/
namespace Think\Session\Driver;
class Redis
{
protected $lifeTime = 3600;
protected $handle = null;
/**
* 开启连接
* @param $savePath
* @param $sessName
* @return bool
*/
public function open($savePath, $sessName)
{
$this->lifeTime = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxlifetime');
if (is_resource($this->handle)) {
return true;
}
$host = C('SESSION_REDIS_HOST') ?: '127.0.0.1';
$port = C('SESSION_REDIS_PORT') ?: '6379';
$auth = C('SESSION_REDIS_AUTH') ?: '';
$timeout = C('SESSION_TIMEOUT') ?: 2.5;
$this->handle = new \Redis();
$this->handle->connect($host, $port);
if(!empty($auth)){
$this->handle->auth($auth);
}
if (!$this->handle) {
return false;
}
return true;
}
/**
* 关闭连接
* @return bool
*/
public function close()
{
$this->gc(C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxlifetime'));
$this->handle->close();
$this->handle = null;
return true;
}
/**
* 读取session
* @param $sessID
* @return mixed
*/
public function read($sessID)
{
$value = $this->handle->get($sessID);
if($value) {
return $value;;
} else {
return '';
}
}
/**
* 写入session
* @param $sessID
* @param $sessData
* @return mixed
*/
public function write($sessID, $sessData)
{
return $this->handle->setex($sessID, $this->lifeTime, $sessData);
}
/**
* 注销session
* @param $sessID
* @return bool
*/
public function destroy($sessID)
{
return $this->handle->del($sessID)>=1 ? true : false;
}
/**
* 垃圾回收
* @param $sessMaxLifeTime
* @return bool
*/
public function gc($sessMaxLifeTime)
{
return true;
}
}