【问题标题】:How to track Visit Duration for 1 page website如何跟踪 1 页网站的访问持续时间
【发布时间】:2012-03-17 17:22:27
【问题描述】:

我有一个网站页面,大多数访问者都会在该页面上花费时间。该网站使用 PHP 与 Codeigniter 和 jQuery。

问题:但是,我相信像 Piwik 这样的跟踪系统通过从访问者离开该页面到页面的时间减去访问者在页面上花费的时间来计算该页面所花费的时间他加载页面。

有没有办法解决这个问题?也许使用 javascript 来触发跟踪系统,以便它知道访问者正在离开页面?

【问题讨论】:

  • 使用基于 JS 的 onbeforeunload 类型的 ajax pinger 是您确定某人何时离开页面的唯一方法,尤其是当他们要离开去其他地方而您再也不会从他们那里获得成功时.
  • Marc B 所说的,或者您可以运行一个以 10-15 秒为间隔的计时器,它会 ping 您的服务器,让您知道用户仍在页面上。当 ping 停止输入时,您可以假设用户已经离开。
  • 你为什么不把它写下来作为答案,用几个 lins 和一个演示。我会投票给你。~)
  • @MarcB 是否保证在所有浏览器中触发该事件?
  • @levi:没有。你不能依赖任何客户端。

标签: php javascript jquery matomo


【解决方案1】:

编辑:我在 $id 中添加了一些“加盐”,我不知道.. 我觉得它更加独特,尽管我认为由于使用微秒,但只是为了更加确定

类似的东西
查询: 每 10 秒向 StayAlive.php 发出 Ajax 请求

function pingPing(){
    $.ajax(
    {
        type:'GET',
        url:'StayAlive.php', 
        success: function() 
        {
            setTimeout(pingPing, 10000);
        }
    }
}


PHP:StayAlive.php

<?php
function newUser(){
  $id=sha1($_SERVER['HTTP_USER_AGENT'].microtime().$_SERVER['REMOTE_ADDR']);
  setcookie("id", $id, time()+3600*24*365);
  //create new row in the database for that $id

}
if (isset($_COOKIE["id"])){
  //check if the id is in the database
  //if yes => time_spent+=10
  //if no => newUser();
}
else
  newUser();
?>

【讨论】:

    【解决方案2】:

    当用户离开页面时,您可以使用以下命令向页面发送 Ajax 请求(他们不一定要加载新的)。

    $(window).unload( function () {
    $.ajax({
        type: "POST",
        url: "yourpage.php",
        data: {
            command: "disconnect"
        },
        dataType: "json",
        async: false,
        success: function(data) {}
    });
    });
    

    您可以创建一个 javascript,在用户加载页面时生成时间戳,并在用户离开时将其传递给 .php 页面。计算时间戳的差异以计算出他们在页面上花费了多长时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 2011-04-23
      • 2011-02-16
      • 1970-01-01
      • 2013-06-17
      相关资源
      最近更新 更多