1

我想衡量用户在我的网站上花费的时间。社区站点需要它,您可以在其中说:“用户 X 已经在这里花费了 1397 分钟。”

在阅读了一些有关此的文档后,我知道没有完美的方法可以实现这一目标。你无法测量准确的时间。但我正在寻找一种能够提供良好近似值的方法。

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

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

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

4

7 回答 7

6

这可能毫无意义....如果用户打开了三个选项卡并“访问”您的站点,同时实际在其他两个选项卡上工作怎么办?你要数那个吗?

于 2009-11-21T23:12:02.057 回答
2

为什么不只衡量实际可以衡量的内容?:推荐、页面浏览量、点击率等。

收集和宣传这些数字完全符合其他网络指标。

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

于 2009-11-21T23:11:40.237 回答
2

您可以做的是检查用户是否在页面上处于活动状态,然后每 X 秒(60 秒可以吗?)向您的服务器发送一个 ajax 请求,以确定用户是否在页面上处于活动状态。

然后您可以使用您提到的第二种方法来计算两个“活动”时间戳之间的时间差,这些时间戳之间的间隔不超过一个或两个间隔。添加这些将给出用户在您的网站上花费的时间。

于 2009-11-21T23:32:17.557 回答
2

有两个因素对你不利——

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

  2. 即使这样,您也会计算浏览器窗口时间,而不是用户时间;用户可以轻松地同时在多个浏览器实例上打开多个选项卡。

我怀疑您的最佳近似值是每次点击的平均注意力时间量,然后相乘。但是,您也可以测量点击次数。

于 2009-11-22T00:08:56.627 回答
0

谷歌分析包括一个非常强大的事件记录/跟踪机制,您可以自定义和利用以获得对用户行为的非常好的测量 - 我会研究一下

于 2009-11-21T23:54:23.547 回答
0

一个非常简单的解决方案是使用隐藏的 iframe 定期加载 php 网页。加载的网页记录开始时间(如果不存在)和停止时间。当此人离开页面时,您会看到此人第一次访问该站点的时间以及他们最后一次访问该站点的时间。在这种情况下,时间戳每 3 秒更新一次。

我使用文件来保存日志信息。我使用的文件名由月-日-年 ipaddress.htm

示例 iframe php 代码。把它放在你的网站/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);


?>

用于在主网页中定期重新加载 iframe 的 javascript。:

<!-- 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>

你会得到一个这样的结果页面:

2015 年 3 月 22 日 104.37.100.30

2015 年 3 月 22 日 18:09:03

2015 年 3 月 22 日 19:18:53


2015 年 3 月 22 日 142.162.20.133

2015 年 3 月 22 日 18:10:06

2015 年 3 月 22 日 18:10:21

于 2015-03-24T20:58:09.753 回答
-2

我认为客户端 JavaScript 分析是解决此问题的方法。

你有 google analitycs、piwik,还有 JS 中的广告工具可以做到这一点。

于 2009-11-21T23:04:40.813 回答