Php 监控页面浏览时间

Php 监控页面浏览时间,php,javascript,monitoring,pageviews,Php,Javascript,Monitoring,Pageviews,有什么简单的方法可以监控用户浏览页面的时间吗 Google Analytics通过允许您查看您的网站访问者在特定页面上停留的时间来使用此功能。可以用PHP或JavaScript复制类似的内容吗?我想您可以尝试使用窗口.onbeforeunload方法触发ajax调用。加载页面时,记录时间;卸载页面时,使用ajax将经过的时间发送到服务器。页面显然永远看不到响应,但这并不重要 正如布拉德指出的,这有点不可靠。另一种方法是每几秒钟更新一次服务器。您还应该在经过的时间上加上一半的时间间隔,以计算上次更

有什么简单的方法可以监控用户浏览页面的时间吗


Google Analytics通过允许您查看您的网站访问者在特定页面上停留的时间来使用此功能。可以用PHP或JavaScript复制类似的内容吗?

我想您可以尝试使用
窗口.onbeforeunload
方法触发ajax调用。加载页面时,记录时间;卸载页面时,使用ajax将经过的时间发送到服务器。页面显然永远看不到响应,但这并不重要


正如布拉德指出的,这有点不可靠。另一种方法是每几秒钟更新一次服务器。您还应该在经过的时间上加上一半的时间间隔,以计算上次更新和用户离开之间的平均时间。例如,如果你每10秒更新一次,最后一次更新是40秒,那么假设他们在那里45秒。这涵盖了40.0秒到49.999秒之间未被记录的情况。

进行此操作的常用方法是简单地测量一个页面视图和下一个页面视图之间的时间。不过,这里面有很多“陷阱”

  • 您不知道加载最后一页的时间
  • 你不知道该反弹了
  • 多个选项卡会出现问题,以及其他问题
  • 有人在你的页面上停留了4个小时,还是他们关闭了浏览器又回来了

为了解决这些问题,另一种常见的方法是轮询服务器。您可以通过长时间轮询(连接保持打开状态,一分钟左右没有数据传输,然后立即建立另一个连接)或每隔5秒左右重复点击服务器来完成此操作。我建议使用长轮询方法,因为它占用的带宽要小得多。

是的,很简单。只需在页面加载时启动计时器,并在用户离开页面时将其发送到某个服务器脚本进行日志记录

触发页面,使事件保持读取状态

客户端代码示例:

<html>
...
<script>
var visit_start_time_ms = (new Date).getTime();
window.onbeforeunload = function() {
    var visit_time = (new Date).getTime() - visit_start_time_ms;
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET","http://your-tracking-server.com/track.php?track_url=...&visit_time=" + visit_time,true);
    xmlhttp.send();
};
</script>
...
</html>

记住,客户端没有经过测试,也根本没有交叉浏览器。服务器端使用不推荐的mysql_query函数。

您可以在控制器环境中执行此操作,如果用户正在查看特定网页(以及在何处),则会跟踪用户的眼睛。如果在浏览器中只对普通的事情使用跟踪功能,例如用户接到电话或切换到其他选项卡,以及我们每天打开浏览器时所做的所有事情,这通常有助于消除这些问题。

@Brad我目前正在调查这一问题,看看是否可以改进答案。@Brad:你为什么这么说?
onbeforeunload
事件不可靠吗?@xbonez事件很好,但是ajax调用可以在有机会发送之前很快取消。我只是自己测试了一下,没有一个调用成功启动。要不要显示一下你的
myescape()
函数代码$5表示您可以接受某种形式的SQL注入。这是我想象的函数。我在所有项目中都使用PDO和准备好的语句。谢谢你的关注。
...
mysql_query('INSERT INTO track_visit_time (url, time) VALUES ("'.myescape($_GET['track_url']).'", '.float($_GET['visit_time']).')');
...