浏览模式: 标准 | 列表 Tag: 统计

恍然大悟,原来统计不准是这个原因

我曾经郁闷了几天。为什么检查这么严格的统计。每天会有这么大的访问量呢?而在本机无论怎么刷新都不涨呢?

今天在清理的1W多条Trackback spam的时候,想是不是要搞个黑名单了?每天都有几千上万的Trackback Spam,过滤了95%以上。但是还是有几百条显示了。

但是一看IP。都是不一样的。我突然想到。trackback.php文件调用了include/common.php这个核心文件。而统计的过程就是在这个核心文件里。假设IP都不一样。那发过来多少trackback,计数器就会加多少,所以大家每天看我的访问量,就知道我收到多少Trackback Spam了,这样的话,如果在统计操作的过程中,加入判断,如果是来自trackback.php文件访问的。那就不加总访问量和当日访问量。毕竟是非人工访问,那就肯定精确多了。

Tags: 统计, spam, 垃圾, trackbacks

关于统计不准

统计的代码是这样的。不知道是不是算法有问题。不过如果本地禁用了COOKIE,或者访问了又清除COOKIE,这段代码的累计操作会不断执行,就不可能防刷新了。

// 如果客户端不等于COOKIE    记录的IP
if ($_COOKIE['UserIP'] !== getip()) {
    
//把客户端的IP保存到客户端的COOKIE一天
    
setcookie ('UserIP'getip(), time()+(24*3600));
    
$curtime sadate('Y-m-d');
    
$rs $DB->fetch_one_array("SELECT curdate FROM ".$db_prefix."statistics WHERE curdate='".$curtime."'");
    
//查看数据库统计的时间是否为当天
    
if(!$rs) {
    
//不为当天,这是当天第一个人访问的操作。
    //更新统计时间为当天
    
$DB->query("UPDATE ".$db_prefix."statistics SET curdate ='".$curtime."'");
    
//更新当天的统计为1
    
$DB->query("UPDATE ".$db_prefix."statistics SET today_view_count = '1'");
    } else {
    
//如果是当天,则表示有人访问过了,就给当天的统计+1
    
$DB->unbuffered_query("UPDATE ".$db_prefix."statistics SET today_view_count = today_view_count+1");
    }
    
//总的访问量+1
    
$DB->unbuffered_query("UPDATE ".$db_prefix."statistics SET all_view_count = all_view_count+1");
    
statistics_recache();
}
//完了之后,IP已经记录到客户端COOKIE里,当再次访问时,客户端IP和COOKIE一样。就不会执行上面的统计累加操作。
//即防止本地多次刷新。

如果要达到很精确,肯定要记录在服务器了。要不就是写文件,要不就是记录在数据库里,麻烦。还是要找找新的算法。让统计更精确一些。发上来让大家交流一下。

这天看到fckeditor有了新版本。说修补了一些BUG。我看了看。其实我去掉了一些功能后。BUG也就不存在了。而且在原来精简的基础上,又精简了一些小功能。速度也不错,况且似乎新的FCKeditor和我们现在用的代码有些变动。所以也就不打算用新的FCKeditor了。浪费时间。

Tags: fckeditor, 统计