ウェブサイトでオンライン時間を測定します
質問
ユーザーが私のウェブサイトに費やす時間を測定したいと思います。 「ユーザーXはここで1397分を費やしている」と言うことができるコミュニティサイトに必要です。
これに関するいくつかの文書を読んだ後、私はこれを達成するための完璧な方法がないことを知っています。正確な時間を測定することはできません。しかし、私は適切な近似を与えるアプローチを探しています。
どうすればこれを行うことができますか?私のアイデア:1)すべてのページビューのオンラインタイムカウンターに30秒を追加します。 2)すべてのページビューで、現在のタイムスタンプを保存します。次のビューで、保存されたタイムスタンプと現在のタイムスタンプの違いをオンラインタイムカウンターに追加します。
これが重要な場合は、PHPとMySQLを使用します。
私はあなたが私を助けることができることを願っています。前もって感謝します!
解決
2つの要因があなたに対して働いています -
ポイントインタイム統計(ページビュー)のみを収集することができ、それらのポイント間で何が起こったかを検出する合理的な方法はありません。
それでも、ユーザー時間ではなく、ブラウザのウィンドウ時間をカウントすることになります。ユーザーは、複数のブラウザインスタンスで複数のタブを同時に開くことができます。
あなたの最良の近似は、クリックあたりの平均注意時間の量に起因し、次に乗算することであると思います。しかし、クリックを測定することもできます。
他のヒント
これはおそらく無意味です....ユーザーが3つのタブを開いており、実際に他の2つのタブで作業している間にサイトに「アクセス」している場合はどうなりますか?あなたはそれを数えたいですか?
実際に測定できるものを測定しないのはなぜですか?:紹介、ページビュー、クリックスルーなど。
これらの種類の数字を収集して宣伝することは、Webメトリックの世界の残りの部分と完全に一致しています。
その上、誰かがウェブページを持ち上げて、たとえば2週間の休日に行くなら、それをどのように説明するのが最善ですか?
あなたができることは、ユーザーが ページでアクティブ 次に、ユーザーがアクティブであるかページにアクティブでないか(60秒が問題ありませんか?)秒ごとにサーバーにAjaxリクエストを送信します。
次に、言及した2番目の方法を使用して、2つの「アクティブな」タイムスタンプの時差を計算できます。これらを追加すると、ユーザーがサイトに費やす時間が得られます。
Googleアナリティクスには非常に強力なものが含まれています イベントロギング/追跡 カスタマイズして、ユーザーの動作の本当に良い測定値を得ることができるメカニズム - 私はそれを調べます
非常に簡単な解決策は、PHP Webページを定期的にロードする非表示のiframeを使用することです。ロードされたWebページは、開始時間(存在しない場合)と停止時間を記録します。その人がページを離れると、その人が最初にサイトに来た時間と最後にそこにいたときに残されます。この場合、タイムスタンプは3秒ごとに更新されます。
ファイルを使用してログ情報を保持します。私が使用するファイル名は、毎月のiPaddress.htmで構成されています
IFRAME PHPコードの例。これをyourwebsite/youranalyticsiframecode.phpに入れてください:
<?php
// get the IP address of the sender
$clientIpAddress=$_SERVER['REMOTE_ADDR'];
$folder = "yourAnalyticsDataFolder";
// Combine the IP address with the current date.
$clientFileRecord=$folder."/".date('d-M-Y')." ".$clientIpAddress;
$startTimeDate = "";
// check to see if the folder to store analytics exists
if (!file_exists($folder))
{
if (!mkdir($folder))
return; // error - just bail
}
if (file_exists($clientFileRecord) )
{
//read the contents of the clientFileRedord
$lines = file($clientFileRecord);
$count = 0;
// Loop through our array, show HTML source as HTML source; and line numbers too.
foreach ($lines as $line_num => $line)
{
echo($line);
if ($count == 0)
$startTimeDate = rtrim( $line );
$count++;
}
}
if ($startTimeDate == "")
$startTimeDate = date('H:i:s d-M-Y');
$endTimeDate = date('H:i:s d-M-Y');
// write the start and stop times back out to the file
$file = fopen($clientFileRecord,"w");
fwrite($file,$startTimeDate."\n".$endTimeDate);
fclose($file);
?>
JavaScriptは、メインWebページでiframeを定期的にリロードする。
<!-- Javascript to reload the analytics code -->
<script>
window.setInterval("reloadIFrame();", 3000);
function reloadIFrame() {
document.getElementById('AnalyticsID').src = document.getElementById('AnalyticsID').src
// document.frames["AnalyticsID"].location.reload();
}
</script>
メインのWebページのiframeは次のようになります:
<iframe id="AnalyticsID" name="AnalyticsID" src="http://yourwebsite/yourAnalyticsiFrameCode.php" width="1"
height="1" frameborder="0" style="visibility:hidden;display:none">
</iframe>
タイムスタンプファイルを表示する非常に簡単な方法:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
Analytics results
<br>
<?php
$folder = "yourAnalyticsDataFolder";
$files1 = scandir($folder);
// Loop through the files
foreach ($files1 as $fn)
{
echo ($fn."<br>\n");
$lines = file($folder."/".$fn);
foreach ($lines as $line_num => $line)
{
echo(" ".$line."<br>\n");
}
echo ("<br>\n <br>");
}
?>
</body>
</html>
次のような結果ページが表示されます:
22-MAR-2015 104.37.100.30
18:09:03 22-MAR-2015
19:18:53 22-MAR-2015
22-MAR-2015 142.162.20.133
18:10:06 22-MAR-2015
18:10:21 22-MAR-2015
クライアント側のJavaScript Analyticsがこれの解決策だと思います。
あなたはGoogle AnalityCを持っています、 ピウィク, また、JSのコマーシャルツールもまさにそれを行います。