voidgraphics/laravel-pageview-counter

该软件包最新版本(v0.1.0)没有可用的许可证信息。

一个简单的页面浏览量统计工具

v0.1.0 2024-08-19 21:25 UTC

This package is auto-updated.

Last update: 2024-09-19 21:39:26 UTC


README

一个简单的页面浏览量统计工具,用于跟踪Laravel项目的页面浏览量。它将请求记录到数据库表,您可以使用Eloquent模型访问这些数据。

基于Bastiaan Rudolf的这篇文章“使用Laravel进行基本网络分析的简单方法”

安装

composer require voidgraphics/laravel-pageview-counter

您需要发布将添加页面浏览量表迁移

php artisan vendor:publish --tag=pageview-counter-migrations

然后运行迁移

php artisan migrate

之后,注册LogRequest中间件。您可以在全局或特定路由上执行此操作。以下是在Laravel 11中全局安装的示例

// bootstrap/app.php

<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;
use PageviewCounter\Middleware\LogRequest;

return Application::configure(basePath: dirname(__DIR__))
    // ...
    ->withMiddleware(function (Middleware $middleware) {
        $middleware->append(LogRequest::class);
    })
    // ...
    ->create();

访问数据

现在,每个击中这些路由的请求都将被记录。您可以使用PageviewCounter\Models\Pageview模型访问这些数据。它有3个作用域来帮助您查询数据。

Pageview::daily()->get(); // Returns the number of views grouped by date and path.

/*
Illuminate\Database\Eloquent\Collection {
    all: [
        PageviewCounter\Models\Pageview {
            views: 156,
            path: "/",
            date: "2024-07-18",
        },
        PageviewCounter\Models\Pageview {
            views: 68,
            path: "about",
            date: "2024-07-18",
        }
        PageviewCounter\Models\Pageview {
            views: 289,
            path: "/",
            date: "2024-07-17",
        },
        PageviewCounter\Models\Pageview {
            views: 32,
            path: "about",
            date: "2024-07-17",
        }
    ],
}
*/
Pageview::byPage()->get(); // Get pageviews, grouped by page

Illuminate\Database\Eloquent\Collection {#3604
    all: [
        App\Models\Pageview {#3603
            views: 230,
            path: "/",
            unique_visitors: 178,
            latest_visit: "2024-07-23 12:59:19",
        },
        App\Models\Pageview {#3601
            views: 132,
            path: "about",
            unique_visitors: 129,
            latest_visit: "2024-07-20 14:27:38",
        },
    ],
}
Pageview::withoutBots()->get(); // Exclude most popular bots by user-agent

/*
Shorthand for: 

$query->where('useragent', 'not like', '%bot%')
    ->where('useragent', 'not like', '%python-requests%')
    ->where('useragent', 'not like', '%http%')
    ->where('useragent', 'not like', '%node-fetch%')
    ->where('useragent', 'not like', '%postman%')
    ->where('useragent', 'not like', '%curl%')
*/
Pageview::uniqueVisitors()->get(); // Returns the count of unique visitors, grouped by date

/*
Illuminate\Database\Eloquent\Collection {
    all: [
        PageviewCounter\Models\Pageview {
            unique_visitors: 176,
            date: "2024-07-18",
        },
        PageviewCounter\Models\Pageview {
            unique_visitors: 302,
            date: "2024-07-17",
        }
    ],
}
*/