前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于Redis实现Laravel全站访问 PV 统计中间件功能

基于Redis实现Laravel全站访问 PV 统计中间件功能

原创
作者头像
Action
修改2021-08-11 18:11:58
9540
修改2021-08-11 18:11:58
举报
文章被收录于专栏:WEB开发~

创建项目

新建示例项目

代码语言:txt
复制
laravel new redis-demo

Redis客户端连接与配置

在 redis-demo 项目根目录下的 .env 环境配置文件中配置 Redis 连接信息:

代码语言:txt
复制
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

Redis 计数器功能实现

我们可以基于 Laravel 全局中间件结合 Redis 的 INCR 指令来实现这个功能,创建一个名为 SiteVisits 的中间件:

代码语言:txt
复制
php artisan make:middleware SiteVisits

代码如下:

代码语言:txt
复制
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redis;

class SiteVisits
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        Redis::incr('site_total_visits');
        return $next($request);
    }
}

在 app/Http/Kernel.php 中应用这个全局中间件:

代码语言:txt
复制
protected $middleware = [
    ...
    \App\Http\Middleware\SiteVisits::class,
];

Redis 计数器的值

我们在 routes/web.php 中注册一个路由获取计数器的值进行测试:

代码语言:txt
复制
Route::get('/site_visits', function () {
    return '网站全局访问量:' . \Illuminate\Support\Facades\Redis::get('site_total_visits');
});

在浏览器中访问该路由,每次刷新页面计数器的值都会 +1,说明计数器工作正常。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建项目
  • Redis客户端连接与配置
  • Redis 计数器功能实现
  • Redis 计数器的值
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档