2012-11-26 86 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