예제 #1
0
 public static function visitor($type = null)
 {
     if (empty($type)) {
         if (strpos($_SERVER['REQUEST_URI'], 'admin') !== false) {
             $type = 'admin';
         }
         if (strpos($_SERVER['REQUEST_URI'], 'interface') !== false) {
             $type = 'interface';
         }
         if (strpos($_SERVER['REQUEST_URI'], 'images') !== false) {
             $type = 'images';
         }
         if (strpos($_SERVER['REQUEST_URI'], 'download') !== false) {
             $type = 'download';
         }
     }
     if ($type == "images") {
         return true;
     }
     $visitor = new LogVisitor();
     $visitor->url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
     //$visitor->hash =  ParseUrl::hash($visitor->url);
     //$user = UserBehavior::getCurrentUser();
     if (!empty($user)) {
         $visitor->uid = $user['id'];
     }
     if (!empty($_SERVER['HTTP_USER_AGENT'])) {
         $visitor->user_agent = $_SERVER['HTTP_USER_AGENT'];
     }
     if (!empty($_SERVER['HTTP_REFERER'])) {
         $visitor->referer = $_SERVER['HTTP_REFERER'];
     }
     $visitor->vip = $_SERVER['REMOTE_ADDR'];
     if (!empty($type)) {
         $visitor->type = $type;
     }
     $visitor->ctime = time();
     return $visitor->save();
 }
예제 #2
0
 public function lastMonthVisitor()
 {
     //		$cache = Yii::app()->cache;
     //$cache->flush();
     //		$stat = $cache->get('last_month_visitor');
     //		if(empty($stat))
     //		{
     $criteria = new CDbCriteria();
     $end_time = strtotime(date('Y-m-d 0:0:0', time()));
     //$end_time = time();
     $start_time = $end_time - 86400 * 30;
     $criteria->addCondition('ctime >' . $start_time . ' AND ctime <' . $end_time);
     $criteria->order = 'ctime ASC';
     $models = LogVisitor::model()->findAll($criteria);
     if (!empty($models)) {
         foreach ($models as $value) {
             //划分数据片区
             $key = floor(($value->ctime - $start_time) / 86400);
             $data_split[$key][] = $value;
             //统计重复地址
             $addr[$value->url][] = $value;
         }
         foreach ($addr as $key => $value) {
             $stat_addr[$key] = count($value);
         }
         arsort($stat_addr);
         $stat['addr'] = $stat_addr;
         foreach ($data_split as $value) {
             $data['x'] = strtotime(date('Y-m-d', $value[0]->ctime)) * 1000;
             //		echo $data['x'].'|'.$value[0]->ctime.'|'.date('Y-m-d H:i:s',$value[0]->ctime).'<br>';
             foreach ($value as $v) {
                 $data_pv[md5($v['uid'] . $v['user_agent'] . $v['vip'] . floor($v->ctime / 10))][] = $v;
                 $data_uv[md5($v->uid . $v->user_agent . $v->vip)][] = $v;
                 $data_ip[$v->vip][] = $v;
             }
             $stat_tp[] = array($data['x'], count($value));
             $stat_pv[] = array($data['x'], count($data_pv));
             $stat_uv[] = array($data['x'], count($data_uv));
             $stat_ip[] = array($data['x'], count($data_ip));
             $data_pv = $data_uv = $data_ip = array();
         }
         $stat['tp'] = CJSON::encode($stat_tp);
         $stat['uv'] = CJSON::encode($stat_uv);
         $stat['pv'] = CJSON::encode($stat_pv);
         $stat['ip'] = CJSON::encode($stat_ip);
         //				$cache->set('last_month_visitor',$stat,86400);//设定缓存,这里的过期时间有问题。
         return $stat;
     }
     return false;
     //		}else{
     //			return $stat;
     //		}
 }