如何在网站上跟踪用户时间

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

最简单的方法是什么?

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

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

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

更新:

   Collect time       

和后端脚本:

  

但正如我所说,它不适用于Opera浏览器

我能想到的主要方式:

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

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

  1. 访问页面,生成代码(比如说:page. index.php代码: 2345
  2. 将其存储在具有IP的数据库表中,并访问时间
  3. 卸载事件触发,调用AJAX,传递页面和代码
  4. 在数据库中查找IP,页面和代码,并记录休假时间

如果他们再次访问index.php ,您将生成另一个代码,例如36789 。 使用生成随机GUID的东西是最好的,因此您可以(基本上)忽略相同IP /页面/代码组合上的任何冲突可能性。

使用PHP确实没有一种有效的方法,因为PHP是服务器端的,并且无法确定页面何时关闭。 您需要使用javascript来确定这一点。

我要做的是使用javascript在window.onload上启动计时器,然后在window.onload结束计时器。 然后,您可以存储数据并使用它执行所需的操作。

$(window).unload是一个非常好的跟踪用户离开页面的function。

但有一点是当窗口卸载发送ajax时它现在正常工作,当用户离开页面时ajax没有完成。 所以你需要向ajax添加一个属性(async:false),代码是打击:

 $.ajax({ type: 'POST', async: false, url: '/collect-user-time/ajax-backend.php', data: {time: time} });