2009-11-21 80 views
1

我想测量用户在我的网站上花了多少时间。这是社区网站需要的,你可以说:“用户X在这里花费了1397分钟。”在网站上测量在线时间

念叨这一些文件之后,我知道有实现这一目标没有完美的方法。你无法衡量确切的时间。但我正在寻找一种可以给出很好的近似值的方法。

你怎么能这样做?我的想法: 1)在每个页面视图中为在线时间计数器添加30秒。 2)在每个页面视图中,保存当前的时间戳。在下一个视图中,将保存的时间戳和当前时间戳之间的差值添加到在线时间计数器。

我使用PHP和MySQL,如果这很重要。

我希望你能帮助我。提前致谢!

+1

也:http://stackoverflow.com/问题/ 1323375/ – Chris 2009-11-21 23:22:22

+0

谢谢,那里有很好的信息:) – caw 2009-11-26 19:25:05

回答

2

两个因素对你的工作 -

  1. 您只能收集时间点统计信息(页面浏览量),并且没有合理的方法来检测这些点之间发生了什么;

  2. 即使到那时,你会计算浏览器窗口时,没有用户的时间;用户可以轻松地在多个浏览器实例上同时打开多个选项卡。

我怀疑你最好的近似是归因于每次点击的平均关注时间,然后相乘。但是,你也可以测量点击次数。

+0

谢谢,完美的答案。 :)你已经说服我选择其他指标。 – caw 2009-11-26 19:24:09

+0

像计算时间段的解决方案取决于具体的业务场景。而不是计算'会话'时间 – Xiaokun 2016-08-09 14:47:14

-2

我认为客户端JavaScript分析是解决方案。

你有谷歌analitycs,piwik,而且还JS广告的工具,这样做。

2

为什么不只是衡量什么是真正可以衡量?:推荐,页面访问量,点击率等

收集并发布这类数字是完全符合web度量的世界其他地区。

此外,如果有人打开一个网页,然后说,去了两个星期的假期,如何最好地解释它?

+0

你说得对,我应该去衡量这些价值。 – caw 2009-11-26 19:23:01

6

这可能是毫无意义....如果有什么用户可以有三种选项卡中打开,并“访问”您的网站,而实际上工作的另外两个选项卡?你想数一数吗?

+0

@Jim,我认为用javscript你可以区分用户实际浏览页面的时间,不是? – Amirshk 2009-11-21 23:25:25

+0

谢谢,这真的是一个问题... – caw 2009-11-26 19:21:08

2

你可以做的是检查用户是否是active on the page,然后每隔X秒发送一次ajax请求到你的服务器(将60秒是好的?),一个用户在页面上是否活动。

然后,可以使用已提及的计算不是由多于一个或两个间隔分开的两个“有效的”时间戳之间的时间差的第二方法。添加这些会给用户在您的网站上花费的时间。

+0

谢谢,这将是一个很好的解决方案,我认为。 :) – caw 2009-11-26 19:21:40

0

谷歌分析包括一个非常强大的event logging/tracking机制,你可以自定义和挖掘得到真正良好的用户行为测量 - 我会考虑这样做

0

一个非常简单的解决方案是使用隐藏的iframe来定期加载php网页。加载的网页记录开始时间(如果它不存在)和停止时间。当该人离开该页面时,该人员首次访问该网站的时间以及他们最后一次到达该网站的时间。在这种情况下,时间戳每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的定期刷新的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>

的主网页中的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 - 2015年3月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