をCodeIgniterのを使用しています。
基本的には、セッションを使用してサイトへの各訪問を記録し、ページリクエストを記録するか、単に各ヒットをページに記録することができます。最初のオプションは、より多くの情報(何回のユニークヒットが行われたか、リピート訪問者からのヒット数など)を提供しますが、セットアップにはさらに多くの時間がかかり、ユーザーセッション管理が必要です。だから、あなたの目的のために、私はオプション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キャンバスを使用して表示します。または、ヒットごとに日時が設定されているため、時間の経過とともにさらに時間を分解することができます。
これが役立ちます。
これを単純な毎日のカウンタに変更するには、「ビュー」という名前の追加の列を単なる整数として追加します。次に、ページに今日の現在のページの行がデータベースにあるかどうかを確認するチェックを入れます。そうであれば、現在のビューの値を取得し、それを増分してDBに再販します。
私はおそらく、同じ列を持つ別のテーブルを作成しますが、日付 - 時間列は作成しません。あなたのページでは、新しいテーブルの現在のページのビュー値をインクリメントします。
これは高速になるでしょう。トレードオフはディテールの損失です。だから、ここ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.
私は自分の答えを更新しました。好奇心の外に、どのサイトですか?私はあなたが1日に何百万というヒットを期待しているのに驚いています。 – Marvin
それは主に関心がありません、私は今のようなスクリプトを使用する必要はありませんが、私はいくつかの大きなサイトで作業を開始しているので、おそらく将来的にそれを必要とします:) – Adam