2017-08-01 58 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

請幫我解決這個問題 –