使用 redis “捕捉” “用户登录过期” 事件
2024-10-16 08:39:00
实现原理及步骤:
1)登录时,计算登录过期时间,以分钟为单位作key(例如:sign_timeout_201705212233),value方面自己发挥,需要什么数据就拼什么数据进去,只是要注意,一定要拼一个个过期时间进去,然后为了方便追加数据,value后台也可以直接拼一个逗号(例如:1495353081_1,),写一条记录到 redis。也就是同一天过期的用户信息记录到一条redis记录里(第二条开始用append追加,逗号分隔)。
$expires = time()+7*24*3600;
setcookie('_uid', 1, $expires);
setcookie('_uid_expires', $expires, $expires); $YmdHi = date('YmdHi', $expires);
Helper_Redis::append('sign_timeout_'.$YmdHi, $expires.'_1,');
2)然后写一条计划任务,
每分钟查询一次redis记录(用当前时间,用上面的方法,拼接出 key),如果没记录就退出,
如果有记录,转回数组,
然后循环作相应处理就行了
require('./Helper_Redis.class.php'); $YmdHi = date('YmdHi', time());
$redis_key = 'sign_timeout_'.$YmdHi;
$list_str = Helper_Redis::get($redis_key); if(empty($list_str)) die('success'); $list_arr = explode(',', $list_str);
array_pop($list_arr); $now = time(); $iData = array(); foreach ($list_arr as $key=>$item) {
$detail = explode('_', $item); // 需要处理的过期数据
$iData[] = $detail;
} // 处理写登出日志
// Helper_Userlogs::saveSignOut_all($iData); Helper_Redis::delete($redis_key); unset($list_arr, $iData); die('success');
最新文章
- backbone模型层浅析
- Linux中exec命令相关
- [ACM_水题] ZOJ 3706 [Break Standard Weight 砝码拆分,可称质量种类,暴力]
- excel导入记录
- 如何在自己的Windows系统上 架设服务器并开发网站,然后连入外网供外界访问?(JDK+Tomcat+花生壳)
- java的基本数据类型特征
- IIS8中 出现ashx 401:未授权,uploadify上传文件失败
- Codeforces Round #189 (Div. 1) B. Psychos in a Line 单调队列
- 关于block以及__bridge的一些笔记
- 笔记:1.css样式,最前边加 @charset ";utf-8";;是为什么2.js判断各种浏览器的方法
- 【转】如何检测wifi信号强度? -- 不错
- html系列教程--header head iframe img
- 小猪Android越来越方式 Day 5 - part 2
- 【IOS开发】搜索和排序(好友列表,通讯录的实现,searchbar)
- NYoj1058
- Alpha第五天
- Android破解学习之路(十四)——【Unity3D】王牌大作战破解
- 小白在 Eclipse如何避免启动时自动building workspace和validating
- mount --bind使用方法
- SpringBoot的第一个web项目
热门文章
- 使用OpenOffice.org将各类文档转为PDF
- headfirst 07
- Rscripts的使用,以及如何为R脚本传参数
- [Intellij] Intellij IDEA 使用中遇见的问题
- Kafka设计解析(二):Kafka High Availability (上)
- 命令行模式启动VMWare虚拟机
- Bind-DLZ with MySQL
- Java泛型概述
- 特殊权限set_uid /特殊权限set_gid/特殊权限stick_bit/软链接文件/硬连接文件
- jsp连接mysql----------第一篇技术类文章