public function actionUuid($date = '') { $date = $date ? $date : date("Y-m-d"); if (!preg_match("/^\\d{4}-\\d{2}-\\d{2}\$/", $date)) { return $this->echoLog("param date format error,2016-04-28"); } $time_from = date("Y-m-d 00:00:00", strtotime($date)); $time_to = date("Y-m-d 23:59:59", strtotime($date)); $list = AccessLogs::find()->select(['uuid', 'COUNT(*) as total_number'])->where(['>=', 'created_time', $time_from])->andWhere(['<=', 'created_time', $time_to])->groupBy("uuid")->asArray()->all(); if (!$list) { return $this->echoLog('no data to handle~~'); } $date_int = date("Ymd", strtotime($date)); $date_now = date("Y-m-d H:i:s"); foreach ($list as $_item) { $tmp_uuid = $_item['uuid']; if (!$tmp_uuid) { continue; } $tmp_total_number = $_item['total_number']; $tmp_info = StatDailyUuid::find()->where(['date' => $date_int, 'uuid' => $tmp_uuid])->one(); if ($tmp_info) { $tmp_model_info = $tmp_info; } else { $tmp_model_info = new StatDailyUuid(); $tmp_model_info->date = $date_int; $tmp_model_info->uuid = $tmp_uuid; $tmp_model_info->created_time = $date_now; } $tmp_model_info->total_number = $tmp_total_number; $tmp_model_info->updated_time = $date_now; $tmp_model_info->save(0); } return $this->echoLog("it's over~~"); }
public function actionUuid() { $date_from = $this->get("date_from", date("Y-m-d")); $date_to = $this->get("date_to", date("Y-m-d")); $p = intval($this->get("p", 1)); if (!$p) { $p = 1; } $query = StatDailyUuid::find(); if ($date_from) { $query->andWhere(['>=', 'date', date("Ymd", strtotime($date_from))]); } if ($date_from) { $query->andWhere(['<=', 'date', date("Ymd", strtotime($date_to))]); } $total_count = $query->count(); $offset = ($p - 1) * $this->page_size; $list = $query->orderBy("id desc")->offset($offset)->limit($this->page_size)->all(); $page_info = DataHelper::ipagination(["total_count" => $total_count, "page_size" => $this->page_size, "page" => $p, "display" => 10]); $data = []; if ($list) { $idx = 1; foreach ($list as $_item) { $data[] = ['idx' => $idx, 'date' => $_item['date'], 'uuid' => $_item['uuid'], 'total_number' => $_item['total_number']]; $idx++; } } $search_conditions = ['date_from' => $date_from, 'date_to' => $date_to]; return $this->render("uuid", ["data" => $data, "page_info" => $page_info, 'search_conditions' => $search_conditions]); }
public function actionAccess($date = '') { $date = $date ? $date : date("Y-m-d"); $date_now = date("Y-m-d H:i:s"); if (!preg_match("/^\\d{4}-\\d{2}-\\d{2}\$/", $date)) { return $this->echoLog("date{$date} is illegal!!"); } $this->echoLog("stat_access date is {$date}"); $info = StatAccess::findOne(['date' => $date]); if ($info) { $model_stat_access = $info; } else { $model_stat_access = new StatAccess(); $model_stat_access->date = $date; $model_stat_access->created_time = $date_now; } $stat_count = AccessLogs::find()->where(['>=', 'created_time', date("Y-m-d 00:00:00", strtotime($date))])->andWhere(['<=', 'created_time', date("Y-m-d 23:59:59", strtotime($date))])->count(); $model_stat_access->total_number = $stat_count ? $stat_count : 0; $stat_ip_count = AccessLogs::find()->where(['>=', 'created_time', date("Y-m-d 00:00:00", strtotime($date))])->andWhere(['<=', 'created_time', date("Y-m-d 23:59:59", strtotime($date))])->groupBy("ip")->count(); $model_stat_access->total_ip_number = $stat_ip_count ? $stat_ip_count : 0; $stat_uuid = AccessLogs::find()->select(['uuid'])->where(['>=', 'created_time', date("Y-m-d 00:00:00", strtotime($date))])->andWhere(['<=', 'created_time', date("Y-m-d 23:59:59", strtotime($date))])->groupBy("uuid")->asArray()->all(); $model_stat_access->total_uv_number = $stat_uuid ? count($stat_uuid) : 0; if ($stat_uuid) { $stat_returned_user = StatDailyUuid::find()->select(['uuid'])->where(['uuid' => array_column($stat_uuid, 'uuid')])->andWhere(['<', 'date', date("Ymd", strtotime($date))])->groupBy(['uuid'])->all(); $model_stat_access->total_returned_user_number = $stat_returned_user ? count($stat_returned_user) : 0; $model_stat_access->total_new_user_number = $model_stat_access->total_uv_number - $model_stat_access->total_returned_user_number; } if ($model_stat_access->total_number && $model_stat_access->total_uv_number) { $model_stat_access->avg_pv_per_uv = sprintf("%.2f", $model_stat_access->total_number / $model_stat_access->total_uv_number); } $model_stat_access->updated_time = $date_now; return $model_stat_access->save(0); }