我为我的网站制作了一些统计代码(我是一个php开发者)。我想计算网络用户在任何页面上停留多少秒/分钟(如谷歌分析),但我不知道如何做到这一点。感谢您提供任何帮助或脚本!
答案 0 :(得分:3)
您是如何收集数据的?常见的选择是使用javascript检测页面,查看Web服务器日志文件,服务器端请求处理程序或嗅探TCP / IP流量。
像“谷歌分析”这样做意味着前者。在这种情况下,这样做的方法是在页面加载时尽快获取时间戳(而不是等待页面就绪/ onload事件)并将该值与之前的tiestamp进行比较(因此您可能将其存储在一块饼干)。然后你需要一些方法来发送这个服务器端,以及一种记录和报告数据的方法。
请注意,尝试在用户离开页面时触发ajax调用,例如通过onunload,将无法可靠地工作(启动请求的页面在其生命周期结束时)。这里重要的是ASYNCHRONOUS部分。进行同步通话只会降低网站速度。
您可能需要查看Yahoo Boomerang - 虽然它不支持开箱即用的停留时间测量,但它很容易扩展。对于后端,你可能比Graphite
更糟糕答案 1 :(得分:1)
当用户离开页面时,您可以在javascript中触发卸载事件,该页面向您的服务器发送Ajax请求。由于这可能不适用于所有浏览器,特别是在网络延迟较高的情况下,还有ping脚本(也使用Ajax),只要用户停留在页面上,就会偶尔调用统计系统(例如,每个10-60秒,具体取决于你想要的分辨率。
答案 2 :(得分:0)
如果你想在服务器端进行,即在php中,那么你可能需要为此分配一个表。说“解析”
首先,您需要在每个页面中添加此脚本。将这些数据插入到表分析中,即$ _SERVER ['http_referer'],当前时间戳,远程地址和当前页面URL。
现在计算部分。 基本上当用户首次登陆您的页面时,$ _SERVER ['http_referer']将不会来自您的域名。然后将时间戳保留为开始时间。
现在检查下一个时间戳。如果http_referer与先前的记录页面URL相同,则查找时间戳中的差异,以了解用户在页面中停留了多少。
或多或少我想说的是找到用户的每个请求之间的时间。
此方法的缺点:当用户登陆页面时关闭它。无法在您的网站上找到时间。
答案 3 :(得分:0)
我提出的一种快速简便的方法非常有用。
在我希望在页面上跟踪时间的网站的每个页面上,我都包含一个跟踪器脚本。
我尽可能多地获取信息,并创建一个数据库条目,包括引荐来源,请求/加载的页面,用户代理,IP,时间戳等。
这些时间戳与用户的ip一起,可用于确定用户在上一页的时间(包括当前页面的加载时间)。
唯一的缺点是我无法确定他们访问的最后一页上的时间(这并不总是坏事,我可以减少跟踪空闲时间)。
跳出是由指定时间段内给定IP的单个条目识别的(一小时可能就足够了)。
答案 4 :(得分:-1)
在页面加载时创建一个日期对象,然后当页面卸载时创建另一个并减去它们。之后,您可以向跟踪服务器发送AJAX请求,发送已用时间。
var startTime = new Date();
var endTime;
window.onunload = function()
{
endTime = new Date();
var elapsedSeconds = endTime.getTime() - startTime.getTime();
//Do the ajax request, sending elapsedSeconds
}