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

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

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

如果这确实重要的话,我会使用 PHP 和 MySQL。

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

有帮助吗?

解决方案

有两个因素对你不利 -

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

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

我怀疑你最好的近似方法是分配每次点击的平均注意力时间,然后相乘。但你也可以衡量点击次数。

其他提示

这大概是没有意义的......如果用户打开了三个选项卡并且正在“访问”您的网站,同时实际上正在使用其他两个选项卡,该怎么办?你想数一下吗?

为什么不只测量实际可以测量的东西呢?:推荐、页面浏览量、点击率等。

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

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

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

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

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

一个非常简单的解决方案是使用隐藏的 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);


?>

定期重新加载主网页中的 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

18:09:03 2015 年 3 月 22 日

19:18:53 2015 年 3 月 22 日


2015 年 3 月 22 日 142.162.20.133

18:10:06 2015 年 3 月 22 日

18:10:21 2015 年 3 月 22 日

我认为客户端 JavaScript 分析就是这个问题的解决方案。

你有谷歌分析, 皮维克, ,JS 中也有商业工具可以做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top