voidgraphics / laravel-pageview-counter
该软件包最新版本(v0.1.0)没有可用的许可证信息。
一个简单的页面浏览量统计工具
v0.1.0
2024-08-19 21:25 UTC
Requires
- laravel/framework: ^11.0
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", } ], } */