版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zchqq/article/details/82790299
这个功能用redis 和session_id结合起来做
先设置session_id永不超时:
$lifeTime = 24 * 3600;//一天 setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 这条语句我放在了home.php这个控制器的构造方法中,其他控制器继承这个控制器,页面有操作是都会重新设置一次session_id.
页面有操作时在把redis过期时间重新设置下
$(document).on('mousedown mouseup click keypress keydown keyup',function () { var af = ''; $.post('/home/Index/updateRedisExpire',{},function (data) { af = data; console.log(af); },'json'); })
/** * 更新redis过期时间 * @return int */ public function updateRedisExpire(){ $Redis = $this->getRedis(); $Redis->set('admin_info_'.session_id(),json_encode($this->adminInfo)); $Redis->set('login_code_'.$this->admin_id,session_id()); $Redis->expire('admin_info_'.session_id(),Config('Redis.expire')); $Redis->expire('login_code_'.$this->admin_id,Config('Redis.expire')); $t2 = $Redis->ttl('admin_info_'.session_id()); return $t2; }
/*获取redis对象*/ protected function getRedis(){ if(!self::$redis instanceof \Redis){ self::$redis = new \Redis(); self::$redis->connect(config('Redis.host'),config('Redis.port')); self::$redis->auth(config('Redis.auth_password')); self::$redis->select(0); } return self::$redis; }