如何在网站上跟踪用户时间
我希望跟踪用户在网站上的平均时间(与Google分析相同的内部管理时间)。
最简单的方法是什么?
您可以通过以下方式获得时间:
- 用户访问您的网站后,将当前时间保存为“已访问”的Cookie,并在下次访问时抓取,如果已设置。
- 而且更昂贵的方法:当页面加载时,启动js计时器,并在页面卸载时发送到用户发送的服务器时间并将其保存到db。
- 如果window.unload在Opera中不起作用,您可以每5秒向服务器发送一次,并将其存储到DB。
如果需要,我可以编写一个示例脚本。
更新:
Collect time
和后端脚本:
但正如我所说,它不适用于Opera浏览器
我能想到的主要方式:
当用户首次点击页面时,您可以记录他们的IP地址,加载的页面和时间。 然后,使用一些Javascript和AJAX,当他们离开页面时,您使用unload
事件发送到记录页面的AJAX处理程序以及何时离开。
除了会话之外,您还需要使用某种ID来存储页面访问。 假设我打开了5个主页实例,您需要单独记录每个实例。 所以,像这样:
- 访问页面,生成代码(比如说:page.
index.php
代码:2345
) - 将其存储在具有IP的数据库表中,并访问时间
- 卸载事件触发,调用AJAX,传递页面和代码
- 在数据库中查找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} });