统计访问次数,以自然月、周、日

浏览:5563 发布日期:2014/03/12 分类:求助交流
头有点晕,同学们帮我看看对不对,或者有更简洁的办法告诉我,先谢谢了。

需求是这样的,要统计页面的访问次数,要求按自然月、周、日统计,什么意思呢?
就是统计周期是到月底算一个月,不管是月中还是月初开始统计的,只要到了下个月1号,一律归零重新计数。周和日同理。
先贴代码吧://更新访问统计
    function click(){
        $nowtime = time();
        $nowyear = date("Y",$nowtime);//当前年份数字
        $nowmonth = date("n",$nowtime);//当前月份数字
        $nowweek = date("W",$nowtime);//当前一年中的第几周
        $nowday = date('j',$nowtime);//当前一个月的第几天
        $data = array(
            "total_click"=>$this->_record['total_click']+1,
            );
        if($nowyear == date("Y",$this->_record['month_uptime'])){//判断是否同一年
            if($nowmonth <= date("n",$this->_record['month_uptime'])){
                $data['month_click'] = $this->_record['month_click']+1;//月统计+1
                if($nowweek <= date("W",$this->_record['week_uptime'])){
                    $data['week_click'] = $this->_record['week_click']+1;//周统计+1
                    if($nowday <= date('j',$this->_record['today_uptime'])){
                        $data['today_click'] = $this->_record['today_click']+1;//日统计+1
                    }else{//跨日,归零日统计
                        $data['today_click'] = 1;
                        $data['today_uptime'] = $nowtime;
                    }
                }else{//跨周了,归零周以下的统计
                    $data['week_click'] = $data['today_click'] = 1;
                    $data['week_uptime'] = $data['today_uptime'] = $nowtime;
                }
            }else{//跨月,归零统计数据
                $data['month_click'] = $data['week_click'] = $data['today_click'] = 1;
                $data['month_uptime'] = $data['week_uptime'] = $data['today_uptime'] = $nowtime;
            }
        }else{//恰好跨年,则归零月以下的数据
            $data['month_click'] = $data['week_click'] = $data['today_click'] = 1;
            $data['month_uptime'] = $data['week_uptime'] = $data['today_uptime'] = $nowtime;
        }
        M('tongji')->where(array("type"=>$this->_type,"pid"=>$this->_pid))->save($data);//更新统计数据
        exit('0');
    }
$this->_record 这个是旧记录。
我的逻辑是:
先判断年份,避免去年的12月比今年的1月大,如果跨年了,则归零月、周、日的统计
然后判断月份,如果跨月了,就归零月、周、日计数,否则月计数+1
判断周数,如果跨周了,归零周、日计数,否则周计数+1
判断天数,如果过了0点了,归零天计数,否则天计数+1

字段解释:
month_click 月计数
month_uptime 上次月更新时间点,只在归零月计数的时候刷新
week_click 周计数
today_click 当天计数
..
最佳答案
评论( 相关
后面还有条评论,点击查看>>