2012-11-26 70 views
2

我希望能够以最简单的方式记录一个人在我网站上的秒数。不需要谷歌分析或任何其他第三方来源。Javascript - 每隔X秒运行一次php文件

PHP脚本将创建到MySQL的连接并更新相关的值,

我发现了一些剧本在网上,但它似乎并不奏效:


<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script> 
<script> 
    $(document).ready(function() 
    { 
     var refreshId = setInterval(function() 
      $.load('timeonpage.php?wzx=<?php echo $t; ?>&ip=<?php echo $ip; ?>'); 
     }, 5000); 
    ); 
</script> 

谢谢任何帮助!

+0

请定义“似乎没有工作”是指在这种情况下! –

+1

尝试使用'$ .get'。 –

+2

这并不回答你的问题,但使用谷歌分析(即使它具有比你所需要的更多功能)要比滚动你自己的解决方案简单得多 – MrGlass

回答

3

有一个语法错误,你缺少一个左向setInterval功能,并且.ready方法

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script> 
<script> 
$(document).ready(function(){ 
    var refreshId = setInterval(function(){ //SYNTAX ERROR HERE 
     $.load('timeonpage.php?wzx=<?php echo $t; ?>&ip=<?php echo $ip; ?>'); 
    }, 5000); 
}); // SYNTAX ERROR HERE 
</script> 

添加闭幕itionally,我会建议使用$.get方法,如JQuery的.load通常是指装载HTML到一个特定的容器:

var refreshId = setInterval(function(){ 
    $.get('timeonpage.php',{wzx:<?php echo $t?>,ip:<?php echo $ip?>}); 
},5000); 
+0

是的,更不用说['jQuery.load'](http://api.jquery.com/jQuery.load/)是无证的,而你提到的那个(['jQuery.fn.load'](http:///api.jquery.com/load/))是'$ .get'的缩写,带隐式回调以将HTML加载到DOM中,如您所说。由于没有html被添加到DOM,'$ .get'确实更有意义。 –

+0

非常感谢你,那个.get和错误修复确实做到了。谢谢谢谢!!!!!! – themike

2
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </script> 
<script> 
$(document).ready(function() 
{ 
var refreshId = setInterval(function(){ //ANOTHER ERROR 
    $.load('timeonpage.php?wzx=<?php echo $t; ?>&ip=<?php echo $ip; ?>'); 
}, 5000); 
}); //ERROR ON THIS LINE 
</script> 

那么你错过了一个'}'关闭文件准备就绪。尝试一下,可能是如此简单的事情,如果不是,将会有另一个报告回来:)

另外:如果你会考虑第三方服务,请看看GoSquared,那里真的很棒: )

编辑:setInterval的上线:)另一个错误

0

以您目前的方法,用户也可能被算作在线所有86400秒在一天,如果他们只是让他们的浏览器窗口打开。

就我个人而言,我的网站设置为每次用户实际加载页面时,其“最后一页加载”时间都会更新。然后,cron脚本每分钟运行一次,并检查哪些用户在最后一分钟加载了页面。对这些进行计数可以让我很好地确定每个用户在线上花了多少时间。

此外,这会导致WAY减少服务器上的负载 - 如果您的网站上有超过50个用户,您的解决方案可能会杀死它。

0

onLoad可能会更有效地调用一个Ajax脚本,该脚本将您想要的页面和任何其他数据保存到数据库,然后返回一个存储在变量中的唯一标识。在onbeforeunload事件中,您可以使用唯一标识对数据库进行另一次调用。只是我的两分钱...

+0

这实际上正是我现在使用的,只是想摆脱弹出窗口。 – themike