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(); }
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; // } }