9.4. 用户最后登录时间

本教程最新版为 9.x,当前版本已放弃维护,请阅读最新版本!

最近活跃时间

接下来我们将在用户的个人中心头像下显示此用户的『最后活跃时间』。

在 Web 应用中,很多时候应用的效率瓶颈会出现在『数据库系统』中,所以作为一个合格的 Web 开发工程师,我们要严格控制好我们的数据库开销。之前我们已经对一些不需要频繁修改的数据做了缓存,如『活跃用户』数据和『资源推荐』数据,以此减少数据库读取的压力。然而,在数据库中操作中,『写入』对数据库造成的压力,要远比『读取』压力高得多。

想要准确地跟踪用户的最后活跃时间,就必须在用户每一次请求服务器时都做记录,我们使用的主数据是 MySQL,也就是说每当用户访问一个页面,我们都将 MySQL 数据库里的 users 表写入数据。当我们有很多用户频繁访问站点时,这将会是数据库的一笔巨大开销。

我们可以使用 Redis 来记录用户的访问时间,Redis 运行在机器的内存上,读写效率都极快。不过为了保证数据的完整性,我们需要定期将 Redis 数据同步到数据库中,否则一旦 Redis 出问题或者执行了 Redis 清理操作,用户的『最后活跃时间』将会丢失。

基本思路如下:

  1. 记录 - 通过中间件过滤用户所有请求,记录用户访问时间...

本文章首发在 LearnKu.com 网站上。

为了保证课程的高品质,我们需要对课程进行收费。付费后 才能观看剩余内容。 购买

上一篇 下一篇
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
贡献者:2
讨论数量: 16

阿伦
更新 last_active_at 字段时禁止自动更新 updated_at 字段
5 个点赞 | 3 个回复 | 分享 | 课程版本 5.5
阿伦
Redis 缓存同步至数据库时的 N+1 问题
5 个点赞 | 2 个回复 | 分享 | 课程版本 5.5
tudous
为什么 Created_at 是一个对象?
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
白衣落水
这里为什么不使用`Cache`而使用`Redis`呢?
3 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
zhangpipi
访问器的 $value 不用就不会从数据库取值吗?
1 个点赞 | 4 个回复 | 问答 | 课程版本 5.5
幽弥狂
Redis hSet 不是静态方法,调用出错?
1 个点赞 | 3 个回复 | 问答 | 课程版本 5.5
yxkj
Non-static method Redis 报错
1 个点赞 | 0 个回复 | 问答 | 课程版本 6.x
李小明
登录次数如何记录呢?
0 个点赞 | 2 个回复 | 问答 | 课程版本 6.x
tw0325795
[已解决] PhpStorm 出現 member has private access
0 个点赞 | 2 个回复 | 问答 | 课程版本 5.7
xingxiaoli
执行命令的时候获取不到记录的数据
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
vanman
在 App\Models\User 提示 trait 中 notifications 方法冲突
0 个点赞 | 1 个回复 | 问答 | 课程版本 5.5
fidy
为什么 syncUserActivedAt () 要写成实例方法,而不是类方法?
0 个点赞 | 0 个回复 | 问答 | 课程版本 6.x