首页 存档 技术 查看内容

Laravel 5.1 Redis 缓存配合 MySQL 数据库实现「用户最后活跃时间」功能

2018-3-30 13:00 |来自: 互联网 575 0

摘要: 前言# 今日给 PHPHub 开发了记录用户「最后活跃时间」的小功能,现在趁着热乎将相关实现逻辑写出来,欢迎大家指出不足。 基本思路# 通过 Middleware 捕获用户的所有请求; 记录用户的请求时间,将数据放入缓存 (R ...

前言#

今日给 PHPHub 开发了记录用户「最后活跃时间」的小功能,现在趁着热乎将相关实现逻辑写出来,欢迎大家指出不足。

基本思路#

  1. 通过 Middleware 捕获用户的所有请求;

  2. 记录用户的请求时间,将数据放入缓存 (Redis) 中;

  3. 通过 Cron 每十分钟将缓存 (Redis) 里的数据同步到数据库中;

  4. 读取数据:先从 Redis 中读取数据,如 Redis 中没有,则从数据库中获取数据并同步到 Redis 中。

下文中我将针对每一个步骤进行详细说明。

捕获用户的所有请求#

只有捕获用户的所有请求,我们才能实时的记录用户的最后活跃时间。在这里我们通过 中间件 来实现此逻辑。以下是生成中间件的具体操作:

1). 运行以下命令,生成 RecordLastActivedTime 中间件。

php artisan make:middleware RecordLastActivedTime

2). 在 app/Http/Kernel.php 中添加以下配置,将 RecordLastActivedTime 设置为全局中间件。

protected $middleware = [
  ...
  \App\Http\Middleware\RecordLastActivedTime::class,];

3). 在 app\Http\Middleware\RecordLastActivedTime.php 文件中添加逻辑代码

...use Closure;use Auth;class RecordLastActivedTime{
  public function handle($request, Closure $next)
  {
    if (Auth::check()) {
      // 在这里记录用户的访问时间,下文将介绍此方法。
      Auth::user()-
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部