私はcodeIgniterを使用していませんが、ストレートphpでこれを行う方法は次のとおりです。
基本的に、セッションを使用してサイトへの各訪問を記録し、ページリクエストを記録するか、ページの各ヒットを記録することができます。最初のオプションは、より多くの情報(行われた一意のヒットの数、リピーターからのヒットの数など)を提供しますが、セットアップに多くのプログラミングが必要であり、ユーザーセッション管理が必要です。それで、あなたの目的のために、私はオプション2を説明します。
SQL:
Table 'pageViews'
Id - Integer, auto Increment, primary key
page - varchar(150)
datetime - datetime
監視しているページに、次を追加します。
$query2 = "INSERT INTO `pageViews` (page, datetime) VALUES ('".$_SERVER["SCRIPT_NAME"]."', ".date("Y-M-d H:I:s").")";
$result2 = //insert DB connection etc. to apply update to DB
次に、ページと日時スタンプに基づいてデータベースから行をフェッチし、結果をカウントして、html5キャンバスを使用して表示できます。または、各ヒットには日時があるため、さらに1日の時間などに分割できます。
これがお役に立てば幸いです。
単純な日次カウンター用にこれを変更するには、単なる整数である「views」という列を追加します。次に、ページにチェックを入れて、データベースに今日の現在のページの行があるかどうかを確認します。その場合は、現在のビュー値を取得して増分し、DBに再販します。
合計ビュー数については、おそらく同じ列で別のテーブルを作成しますが、日時列では作成しません。次に、ページで、新しいテーブルの現在のページのビュー値もインクリメントします。
これは速く軽くなるでしょう。トレードオフは、詳細が失われることです。したがって、この3番目のオプションのMySQLとPHPは次のとおりです。
MySQL:
Table 'dailyViews'
Id - Integer, auto Increment, primary key
views - integer
page - varchar(150)
datetime - datetime
Table 'totalViews'
Id - Integer, auto Increment, primary key
views - integer
page - varchar(150)
PHP:
// Search the DB for an entry today for this page in dailyViews
$query = "SELECT views FROM `dailyViews` WHERE `page`='".$_SERVER["SCRIPT_NAME"]."' AND `datetime`=".date("Y-M-d H:I:s")."";
$result = //insert your db connection etc to execute the query
if (mysqli_num_rows($result)==1) {
$resultArray = mysqli_fetch_array($result, MYSQLI_ASSOC);
$views = $resultArray['views']+1;
$query2 = "UPDATE `dailyViews` SET `views`=".$views." WHERE `page`='".$_SERVER["SCRIPT_NAME"]."' AND `datetime`=".date("Y-M-d H:I:s")."";
$result2 = //insert DB connection etc. to apply update to DB
} else if (mysqli_num_rows($result)<1) {
$query2 = "INSERT INTO `dailyViews` (views, page, datetime) VALUES (1, '".$_SERVER["SCRIPT_NAME"]."', ".date("Y-M-d H:I:s").")";
$result2 = //insert DB connection etc. to apply update to DB
} else {
// there is more than one entry for this page and date in the DB. An error has ccurred
}
// Then just get the total views for this page and increase it by 1.