Php 如何跟踪1页网站的访问持续时间

Php 如何跟踪1页网站的访问持续时间,php,javascript,jquery,matomo,Php,Javascript,Jquery,Matomo,我有一个网站页面,大多数访问者都会花时间在上面。该站点使用PHP与Codeigniter和jQuery 问题:然而,我相信像Piwik这样的跟踪系统是通过从访问者加载页面的时间中减去访问者离开该页面进入新页面的时间来计算花费在页面上的时间的 有办法解决这个问题吗?也许可以使用javascript触发跟踪系统,以便它知道访问者正在离开页面?编辑:我在$id中添加了一些“satting”,我不知道。。我觉得它更独特,尽管我认为由于使用微秒,不太可能会有类似的ID,但这只是为了更加确定 类似这样的东西

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

问题:然而,我相信像Piwik这样的跟踪系统是通过从访问者加载页面的时间中减去访问者离开该页面进入新页面的时间来计算花费在页面上的时间的

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

编辑:我在$id中添加了一些“satting”,我不知道。。我觉得它更独特,尽管我认为由于使用微秒,不太可能会有类似的ID,但这只是为了更加确定

类似这样的东西
JQuery: 每10秒对StayAlive.php的Ajax请求

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

PHP:StayAlive.PHP


编辑:我在$id中添加了一些“盐渍”,我不知道。。我觉得它更独特,尽管我认为由于使用微秒,不太可能会有类似的ID,但这只是为了更加确定

类似这样的东西
JQuery: 每10秒对StayAlive.php的Ajax请求

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

PHP:StayAlive.PHP


当用户离开页面时,您可以使用以下方法向页面发送Ajax请求(他们不必加载新的请求)


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

当用户离开页面时,您可以使用以下方法向页面发送Ajax请求(他们不必加载新的请求)


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

使用基于BeforeUnload类型的JS ajax pinger是确定某人何时离开页面的唯一方法,特别是如果他们离开页面去了其他地方,而你再也没有从他们那里得到任何帮助。Marc B说,或者,您可以每隔10-15秒运行一个计时器,ping服务器,让您知道用户仍在页面上。当ping停止时,你可以假设用户已经离开了。为什么不写下来作为一个答案,用几个lin和一个演示。我会投你的票。~)@MarcB这个事件保证在所有浏览器中都会被触发吗?@levi:不。你不能依赖客户端的任何东西。使用基于beforeUnload类型的JS ajax pinger大概是你确定某人何时离开页面的唯一方法,特别是如果他们要去别的地方,而你再也没有收到他们的点击。马克B说了什么,或者你可以每隔10-15秒运行一个计时器,ping你的服务器,让你知道用户仍然在页面上。当ping停止时,你可以假设用户已经离开了。为什么不写下来作为一个答案,用几个lin和一个演示。我会投你的票。~@MarcB这个事件保证在所有浏览器中都会被触发吗?@levi:不,你不能依赖客户端的任何东西。
$(window).unload( function () {
$.ajax({
    type: "POST",
    url: "yourpage.php",
    data: {
        command: "disconnect"
    },
    dataType: "json",
    async: false,
    success: function(data) {}
});
});