实现原理及步骤:

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');

使用 redis “捕捉” “用户登录过期” 事件的更多相关文章

  1. 使用Redis共享用户登录成功的信息

    一.问题 比如CSDN,开源中国等等网站,用户登录后不一定什么时候就会把你T了,意思就是不一定哪天在打开网站的时候就让你重新登录.这是怎么回事呢? 再比如:如果存到将用户信息存到Redis了,不清除的 ...

  2. SpringBoot整合redis把用户登录信息存入redis

    首先引入redis的jai包 <dependency> <groupId>org.springframework.boot</groupId> <artifa ...

  3. 如何利用redis key过期事件实现过期提醒

    https://blog.csdn.net/zhu_tianwei/article/details/80169900 redis自2.8.0之后版本提供Keyspace Notifications功能 ...

  4. redis过期事件

    背景:目前在商城项目,订单有过期逻辑,小伙伴提议用redis做,经讨论分析,redis有key的过期事件,貌似可以实现,但是咨询大神,好像不建议这样用,可能会丢数据 随便写了段python代码测试 i ...

  5. 基于Redis位图实现系统用户登录统计

    项目需求,试着写了一个简单登录统计,基本功能都实现了,日志数据量小.具体性能没有进行测试~ 记录下开发过程与代码,留着以后改进! 1. 需求 1. 实现记录用户哪天进行了登录,每天只记录是否登录过,重 ...

  6. Windows 下Redis的部署 及key 过期事件

    window下Redis部署,下载安装完成之后,进入到redis目录: 1.修改配置文件redis.windows.service.conf配置密码 requirepass myRedis (注意在R ...

  7. redis中key过期事件

    刚到新公司一个月左右,有个新需求,想做定时任务,比如在用户注册时间的3天后推送用户一条消息. 从刚开始脑子里面闪现的数据库轮询,立马否定掉(浪费资源),再到linux系统的定时任务,但是当用户量过大时 ...

  8. Redis Key过期事件

    解决方案1: 可以利用redis天然的key自动过期机制,下单时将订单id写入redis,过期时间30分钟,30分钟后检查订单状态,如果未支付,则进行处理但是key过期了redis有通知吗?答案是肯定 ...

  9. Asp.NET WebApi+Redis实现单用户登录实战演练

    一.课程介绍 本次分享课程属于<C#高级编程实战技能开发宝典课程系列>中的一部分,阿笨后续会计划将实际项目中的一些比较实用的关于C#高级编程的技巧分享出来给大家进行学习,不断的收集.整理和 ...

随机推荐

  1. mongoDB之监控工具mongostat

    mongostat是mongdb自带的状态检测工具,在命令行下使用.它会间隔固定时间获取mongodb的当前运行状态,并输出.如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mon ...

  2. Windows 管理

    1. Outlook 2010 更改显示语言. 在"选项"里选择"语言"这一项,在"显示语言"这一项,如果你没有英文选项,则需要安装Engl ...

  3. javascript显示年月日时间代码

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  4. 一圖讓你看懂javascript原型鏈

    每個對象的原型(protype)是一個對象 每個對象都有一個內置屬性protype(__pro__)指向一個對象

  5. Android学习之ListView使用基础

    1.ListView的简单用法 1.1 布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  6. 高斯分布与Gamma分布关系

    https://math.stackexchange.com/questions/1917647/proving-ex4-3%CF%834

  7. 锐捷 ac ap 连接 记录

    需要用到锐捷的ac管理2台ap.记录一下. 参考文档 锐捷WLAN无线产品一本通(V6.0): http://www.ruijie.com.cn/fw/wd/58033 1.确认AC无线交换机和AP是 ...

  8. Yum 安装并设置 MySQL

    本质上都是设置一个yum源,然后yum安装即可.   不过添加yum源有两个方法,一种是自己新建一个 /etc/yum.repos.d/mysql-community.repo :另一种是使用MySQ ...

  9. e783. 监听对JList中项双击和三击

    // Create a list String[] items = {"A", "B", "C", "D"}; JLis ...

  10. MySQL查询优化之explain详解

    MySQL explain命令显示了mysql如何使用索引来处理select语句以及连接表.可以帮助选择更好的索引和写出更优化的查询语句. 使用方法,在select语句前加上explain就可以了: ...