Esempio n. 1
0
 public function beforeAction($action)
 {
     /**
      * @var $user \common\models\User
      */
     $beforeAction = parent::beforeAction($action);
     if (!\Yii::$app->request->isAjax) {
         $log = new LogMain();
         $log->ip = \Yii::$app->request->getUserIP();
         $log->referrer = \Yii::$app->request->getReferrer();
         $log->method = \Yii::$app->request->getMethod();
         $log->action = $action->id;
         $log->controller = $this->id;
         $log->data = \Yii::$app->request->getBodyParams() ? json_encode(\Yii::$app->request->getBodyParams()) : null;
         $log->url = \Yii::$app->getRequest()->getAbsoluteUrl();
         $log->user_id = \Yii::$app->user->getId();
         $log->agent = \Yii::$app->request->getUserAgent();
         $log->robot = \Yii::$app->request->getIsRobot();
         $log->insert(false);
     }
     if (!\Yii::$app->user->isGuest) {
         $user = \Yii::$app->user->identity;
         //если пользователь не обновлялся более 60 секунд, то обновляем данные в объекте, но не делаем запрос в БД,
         // вдруг где то в контроллере уже делает апдейт, что бы не делать лишний запрос к БД
         if ($user->updated_at < time() - Time::SEC_TO_MINUTE) {
             $user->online = true;
             $user->created_at = time();
         }
     }
     return $beforeAction;
 }
 /**
  * Удаление старыъ записей (сессии, логов)
  */
 public function actionGarbageCollector()
 {
     $logMain = LogMain::deleteAll(['<=', 'created', time() - Time::SEC_TO_MONTH]);
     $session = Session::deleteAll(['<=', 'expire', time() - \Yii::$app->session->getTimeout()]);
     $this->stdout('- ' . $this->ansiFormat(LogMain::tableName(), Console::FG_YELLOW));
     $this->stdout(' ');
     $this->stdout(Console::wrapText("удалено {$logMain} записей", 10), Console::BOLD);
     $this->stdout("\n");
     $this->stdout('- ' . $this->ansiFormat(Session::tableName(), Console::FG_YELLOW));
     $this->stdout(' ');
     $this->stdout(Console::wrapText("удалено {$session} записей", 10), Console::BOLD);
     $this->stdout("\n");
 }