我有一個奇怪的問題,我不知道如何標題的話。實時統計/通過時間戳的增量器
我想要做的事:
我想跟蹤的運行總計,我想這個運行總計更新活到我的網頁每一秒。我並沒有試圖跟蹤訪客,它會跟蹤一些奇怪的事情,比如「現在你的身體裏有多少血細胞!」這裏是一個做我想做的網站,但他們在jQuery中做,我試圖在JS中做到這一點,以儘量減少JS文件。 http://www.usagain.com/(左側)
如何我這樣做:
我有AJAX JS文件鏈接到一個PHP文件和PHP文件打開一個文本文件 - >抓住一個數字 - >增加1 - >將所述數字發送回JS - >將數字更新爲HTML - >並且PHP更新文本文件 - >關閉txt文件。
我的問題:
計數器的作品,它增加但問題是,如果我有2個瀏覽器運行在同一個頁面。如果我有3個瀏覽器的數量將增加2;該數字將增加3,依此類推。我認爲這與寫入文件有關,但我不知道如何解決它。
我的代碼
HTML/CSS/JavaScript的/ AJAX
<html>
<head>
<title>Counter</title>
<script language="javascript" src="../jquery1.6.js"></script>
<script type="text/javascript">
function addCommas(nStr) //http://www.mredkj.com/javascript/nfbasic.html -- Source
{
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
}
function getNum()
{
$.post('test.php', function(data){
$('#counter').html(addCommas(data));
})
}
setTimeOut(getNum, 1000);
</script>
<style type="text/css">
#counterContainer{color: #52504D;font-family:Verdana, Geneva, sans-serif;font-weight:bold;font-size:15px;position:relative;top:22px;}
#counter{color: #1E7EC8; font-size: 25px;letter-spacing:1px;}
</style>
</head>
<body onload="getNum()">
<div id="counterContainer">
<div id="counter"><!--Counter Goes Here, Do Not Disturb--></div>
</div>
</body>
</html>
PHP文件
<?php
$fp = fopen("staticNum.txt", "r+");
flock($fp, LOCK_EX);
$num = fgets($fp, 11);
$num = intval($num)+1;
echo $num;
fseek($fp, 0, SEEK_SET);
fputs($fp, "$num");
flock($fp, LOCK_UN);
fclose($fp);
?>
我的文本文件只是有這個數吧:
10000100260
任何建議將是偉大的。我的第一個想法是一個數據庫,但後來我認爲我會有同樣的問題。我確實想遠離會話變量和Cookie,不過肯定是因爲我不認爲它們是必需的。但我可能是錯的。
獎勵積分,如果你能想出一種方法來解決我的問題沒有數據庫! (不是真的,雖然我不是一個管理員:(
+1很好的佈局說明 – amelvin 2012-01-05 22:10:22
如果你要保持一個運行總計的,是遊客(如果不忽略其他,只是讓我知道你在跟蹤什麼!),毫無疑問最好使用會話。否則,頁面更改或刷新將導致訪客數量虛增。 – SmokeyPHP 2012-01-05 22:34:52
我沒有跟蹤訪問者:(這就是我所有的谷歌搜索我會編輯我的問題指定。再次檢查「我在做什麼」在2秒內。**我真的需要一個更好的標題:/ ** – 2012-01-05 22:39:14