我有一个奇怪的问题,我不知道如何标题的话。实时统计/通过时间戳的增量器
我想要做的事:
我想跟踪的运行总计,我想这个运行总计更新活到我的网页每一秒。我并没有试图跟踪访客,它会跟踪一些奇怪的事情,比如“现在你的身体里有多少血细胞!”这里是一个做我想做的网站,但他们在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