2017-08-01 77 views
-4

如何统计页面浏览量。每次保存到数据库。请。我正在使用laravel 5.2。 我尝试了几个软件包,但不能?计数页面浏览量laravel 5.2

+0

为什么不直接使用谷歌分析?没有数据库或额外的代码。 – maiorano84

+0

每次页面加载时,你增加一个计数器?这听起来不太有用。有人可以坐在那里刷新页面几个小时,以弄乱你的统计数据。 – apokryfos

+0

你说你已经尝试了一些解决方案,但不要在这里谈论它们。与寻求解决方案相比,寻求有关问题的帮助更有帮助和协作。请参阅:https://stackoverflow.com/help/mcve –

回答

2

实现此目的的最简单方法是为视图添加一个数据库列,并在您每次为用户加载页面时增加它。然后,您可以通过IP地址或提出请求的用户分隔唯一的视图。

3

您可以创建一个存储所有视图记录的表,所以你可以指望的意见,包括会话过滤,IP等

首先,创建该表:

Schema::create("browsing_history", function(Blueprint $table) 
     { 
      $table->engine = "InnoDB"; 

      $table->increments("id"); 
      $table->string("url"); 
      $table->string("session_id"); 
      $table->string("user_id"); 
      $table->string("ip"); 
      $table->string("agent"); 
      $table->timestamps(); 
     }); 

其次,创建相应的模型:

<?php namespace App\Models; 

class BrowsingHistory extends \Eloquent { 

    protected $table = 'browsing_history'; 

    public static function createLog() { 
      $browsingHistory = new BrowsingHistory(); 
      $browsingHistory->url = \Request::url(); 
      $browsingHistory->session_id = \Request::getSession()->getId(); 
      $browsingHistory->user_id = \Auth::user()->id; 
      $browsingHistory->ip = \Request::getClientIp(); 
      $browsingHistory->agent = \Request::header('User-Agent'); 
      $browsingHistory->save(); 
    } 

} 

三,通过覆盖你的看法控制器的制造商将呼叫添加到日志:

public function __construct() 
{ 
    BrowsingHistory::createLog(); 
} 

要查询的次数,由同一会话忽略点击:

public function countViewsPerSession($url) 
{ 
    return BrowsingHistory::where("url", $url) 
     ->groupBy("session_id") 
     ->count(); 
} 
+0

每次F5它增加到一个值,没有办法设置一定的时间,它是新增 –

+0

@QUANGMAIVAN - 你试图解决什么这个问题? – maiorano84

+0

请帮我解决这个问题 –