示例#1
0
 /**
  * 每天统计一次就够了
  * 10 3 * * *
  */
 public function actionBlog($date = '')
 {
     $date = $date ? $date : date("Y-m-d", strtotime("-1 day"));
     $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_blog date is {$date}");
     $info = StatBlog::findOne(['date' => $date]);
     if ($info) {
         $model_stat_blog = $info;
     } else {
         $model_stat_blog = new StatBlog();
         $model_stat_blog->date = $date;
         $model_stat_blog->created_time = $date_now;
     }
     /*统计已发布文章数量,未发布文章数量,原创文章数量,热门文章数量*/
     $stat_status = Posts::find()->select(['status', 'count(*) as num'])->groupBy("status")->asArray()->all();
     $stat_status = array_column($stat_status, null, "status");
     $model_stat_blog->total_post_number = $stat_status && isset($stat_status[1]) ? $stat_status[1]['num'] : 0;
     $model_stat_blog->total_unpost_number = $stat_status && isset($stat_status[0]) ? $stat_status[0]['num'] : 0;
     $stat_hot = Posts::find()->where(['hot' => 1])->count();
     $model_stat_blog->total_hot_number = $stat_hot ? $stat_hot : 0;
     $stat_original = Posts::find()->where(['original' => 1])->count();
     $model_stat_blog->total_original_number = $stat_original ? $stat_original : 0;
     $stat_today = Posts::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_blog->today_post_number = $stat_today ? $stat_today : 0;
     $model_stat_blog->updated_time = $date_now;
     $model_stat_blog->save(0);
 }