网站访问记录系统

公司之前的网站访问统计,客户不是很关心数据来源及分析,只希望有现在又多少人访问过首页,所以我们当时的解决方案是使用天堂计数器,第三方的。 免费的就是会有各种的折腾,还有到期时间,之后就要重新注册比较麻烦。
我想到SAE平台有 高并发Count服务,就自己做了一个,

使用thinkphp的Ip获取地址的api,需要导入库类@.ORG.IpLocation
建表的时候,考虑到数据量会比较大,而且查询基本是时间跨度不大, 采用了分表的设计,一年一张表,客户对于访问来源的不是很侧重,减少高并发与数据库交互,同一IP地址当天登陆的信息数据库只插入一次,Count增加。ajax返回访问次数,与当次访问的一些地理信息, 可以实现 欢迎来自镇江的游客 这样的功能。

目前这个 应用只支持单程序流量记录统计, 以后有空能做成共通的,类似天堂计数器一样的能页面嵌入js,支持多应用的功能。

`<?php

/**

  • 本页仅供测试
    */
    class IcountAction extends Action {

    protected function _initialize() {

    header("Content-Type:text/html; charset=utf-8");
    

    }

    public function api(){

    import("@.ORG.IpLocation");
    $_table ='icount'.date('Y');
    $icount = M($_table);
    $address=new Iplocation('UTFWry.dat');//新建一个IP查询对象
    $ip     =   get_client_ip();
    $location=$address->getlocation($ip);//省略时表示查询客户端IP.$location可以直接输出使用,键名如上   
     //准备写入的数据
      $data['ip'] = $ip;
      if($location != null){
        $data['address'] = $location['country'];
        $data['area'] = $location['area'];
      } 
       $data['OperationTime'] = date('Y-m-d H:i:s');
       $isExist = $icount->where('OperationTime LIKE '. '"%'.date('Y-m-d').'%"')->find();
       if($isExist==null) {
        $lastInsId = $icount->add($data);
       }
    
    
      //登录计数
    $c = new SaeCounter();
    if ($c->exists('countView')) {
        $c->incr('countView', 1);
    } else {
        $c->create('countView');
        $c->incr('countView', 1);
    } 
    $this->ajaxReturn($data, $c->get('countView'), 1);     
    

    }

}
?>`

你可能感兴趣的:(计数器)