如何跟踪用户在现场的时间

2022-08-30 19:57:18

我希望跟踪用户在网站上的平均时间(与Google分析相同的方式)以进行内部管理。

最简单的方法是什么?


答案 1

您可以通过以下几种方式获得时间:

  1. 用户访问您的网站后,将 cookie 上的当前时间保存为“已访问”,在下次访问时,您可以获取它(如果已设置)。
  2. 而更昂贵的方法:当页面加载时,启动js计时器,并在页面上卸载发送到服务器的时间,哪个用户发送并将其保存到db。
  3. 如果 window.unload 在 Opera 中不起作用,您可以每 5 秒向服务器发送一次时间,并将其存储到 DB。

如果需要,我可以编写一个示例脚本。

更新:

<!DOCTYPE html>
<html>
    <head>
        <title>Collect time</title>
        <script type="text/javascript" src="jquery-1.4.2.min.js"></script>
        <script type="text/javascript">
        $(function()
        {
            var start = null;
            $(window).load(function(event) {
                start = event.timeStamp;
            });
            $(window).unload(function(event) {
                var time = event.timeStamp - start;
                $.post('/collect-user-time/ajax-backend.php', {time: time});
            })
        });
        </script>
    </head>
    <body>

    </body>
</html>

和后端脚本:

<?php 
$time = intval($_POST['time']);
if (!file_exists('data.txt')) {
    file_put_contents('data.txt', $time . "\n");
} else {
    file_put_contents('data.txt', $time . "\n", FILE_APPEND);
}

但正如我所说,它在Opera浏览器中不起作用


答案 2

我能想到的主要方式:

当用户首次点击页面时,您可以记录他们的IP地址,加载的页面和时间。然后,使用一些 Javascript 和 AJAX,当它们离开页面时,您可以使用该事件发送到记录页面以及它们离开时的 AJAX 处理程序。unload

除了会话之外,您还需要使用某种 ID 来存储页面访问。假设我有5个主页打开的实例,你想单独记录每个实例。所以,像这样:

  1. 访问页面,生成一个代码(假设页面:代码:index.php2345)
  2. 将其与他们的IP和访问时间一起存储在数据库表中
  3. 卸载事件 fire,调用 AJAX,传递页面和代码
  4. 在数据库中查找 IP、页面和代码,并记录离开时间

如果他们再次访问,您将生成另一个代码,例如。最好使用生成随机 GUID 的内容,这样您就可以(基本上)忽略同一 IP/页面/代码组合上的任何冲突可能性。index.php36789


推荐