palmans/tracker

Laravel 简单的网站访问/统计跟踪器

v3.0.0 2024-02-14 14:26 UTC

This package is auto-updated.

Last update: 2024-09-14 16:38:05 UTC


README

Latest Version on Packagist

Laravel 简单的网站访问/统计跟踪器。

Tracker 提供了一种简单的方式来跟踪您的网站访问及其统计信息。这是 Arrtrust/Tracker 的分支,提供了相同的功能,但进行了现代化。

功能

  • 兼容 Laravel 8+
  • 中间件用于自动记录网站访问
  • 将网站访问与 Eloquent 模型关联以跟踪其访问次数
  • 根据 URL、方法和 IP 地址持久化唯一访问次数
  • 辅助方法、外观和特性,便于访问服务
  • 方便的 'Cruncher' 用于数字处理需求
  • 根据给定的时间跨度刷新和选择网站访问
  • 提供了一个 phpunit 测试套件以方便开发

安装

安装 Tracker 非常简单。

  1. 通过 Composer 将此包拉入。

    composer require palmans/tracker
    {
        "require": {
            "palmans/tracker": "^2.0"
        }
    }
  2. 您可以通过发布和修改配置文件来配置 Tracker 的默认行为。为此,请使用以下命令。

    php artisan vendor:publish --provider=Palmans\Tracker\TrackerServiceProvider

    然后,您将在 config/tracker.php 路径上找到配置文件。有关选项的信息可以在该文件的注释中找到。配置文件中的所有选项都是可选的,如果未指定则回退到默认值;如果您想使用默认值,请删除选项。

    这还将发布默认 SiteView 模型的迁移文件。在使用 Tracker 之前,请务必迁移您的数据库。

  3. 您现在可以通过外观或辅助函数访问 Tracker。

    tracker()->getCurrent();
    Tracker::saveCurrent();
    
    tracker()->isViewUnique();
    tracker()->isViewValid();
    
    tracker()->addTrackable($post);
    
    Tracker::flushAll();
    Tracker::flushOlderThan(Carbon::now());
    Tracker::flushOlderThenOrBetween(Carbon::now(), Carbon::now()->subYear());
  4. 使用提供的中间件记录视图以记录正确的应用运行时和内存信息非常重要。为此,请在 app\Http\Kernel 中注册中间件。

    protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'guard' => \App\Http\Middleware\Guard::class,
        'track' => \Palmans\Tracker\TrackerMiddleware::class,
    ];

    最好将此中间件注册为路由中间件而不是全局中间件,并在路由或路由组定义中使用它,因为可能没有必要持久化所有网站访问。这将自动将添加到堆栈中的任何可跟踪对象持久化和附加到网站访问,当请求被 Laravel 处理时。

  5. 要将视图附加到任何模型或类,您应该实现 Palmans\Tracker\TrackableInterface 接口。Tracker 提供了 Palmans\Tracker\Trackable 特性,用于 Eloquent 模型。

        
        use Illuminate\Database\Eloquent\Model as Eloquent;
        use Palmans\Tracker\Trackable;
        use Palmans\Tracker\TrackableInterface;
        
        class Node extends Eloquent implements TrackableInterface
        {
            use Trackable;
    
            // ...            
        }

    Trackable 特性使用 Eloquent 的 belongsToMany 关系,该关系利用了枢纽表。以下是一个枢纽表的示例迁移

        <?php
        
        use Illuminate\Database\Schema\Blueprint;
        use Illuminate\Database\Migrations\Migration;
        
        class CreateNodeSiteViewPivotTable extends Migration
        {       
            /**
             * Run the migrations.
             *
             * @return void
             */
            public function up()
            {
                Schema::create('node_site_view', function (Blueprint $table)
                {
                    $table->unsignedBigInteger('node_id');
                    $table->unsignedBigInteger('site_view_id');
        
                    $table->foreign('node_id')
                        ->references('id')
                        ->on('nodes')
                        ->onDelete('cascade');
        
                    $table->foreign('site_view_id')
                        ->references('id')
                        ->on('site_views')
                        ->onDelete('cascade');
        
                    $table->primary(['node_id', 'site_view_id']);
                });
            }
        
            /**
             * Reverse the migrations.
             *
             * @return void
             */
            public function down()
            {
                Schema::drop('node_site_view');
            }
        }
  6. 请检查 Palmans\Tracker\Cruncher 类并测试统计数据处理。它配备了许多用于不同时间跨度内不同类型统计信息(大多是计数)的方法。

请检查测试和源代码以获取更多文档,因为 Tracker 的源代码经过良好的测试和文档化。

许可证

Tracker 根据 MIT 许可证 发布。