public function cronVisitorDataType($type) { if (!isset($this->config[$type])) { return; } $config = $this->config[$type]; $fields = 'visitor_datatype_' . $type; $update = 'updated_datatype_' . $type; $where = $config['where'] ? $config['where'] : '1=1'; $order = $config['order'] ? $config['order'] : 'created_at asc'; $limit = $config['limit'] ? $config['limit'] : 100; $models = StatVisit::find()->where($where)->orderBy($order)->limit($limit)->all(); //连续5次失败则不更新 $i = 0; foreach ($models as $k => $model) { $userName = $model->visitor_username; $ref = $model->visitor_referrer; $params = ['userName' => $userName]; $return = $this->getByType($ref, $type, $params); if ($return['code'] == 200) { $model->{$fields} = $return['data']; $model->{$update} = CURRENT_TIMESTAMP; if (!$model->update()) { print_r($model->errors); } else { \yii::$app->controller->stdout(sprintf("%s - %s:%s Id:%d \n", $userName, $config['name'], $return['data'], $model->id), Console::BOLD); } } else { $i++; if ($i > 5) { break; } } } }
/** * Creates data provider instance with search query applied * * @param array $params * * @return ActiveDataProvider */ public function search($params) { $query = StatVisit::find(); $dataProvider = new ActiveDataProvider(['query' => $query, 'pagination' => ['pageSize' => 100]]); $this->load($params); if (!$this->validate()) { // uncomment the following line if you do not want to return any records when validation fails // $query->where('0=1'); return $dataProvider; } $query->andFilterWhere(['id' => $this->id, 'status' => $this->status, 'updated_datatype_0' => $this->updated_datatype_0, 'updated_datatype_1' => $this->updated_datatype_1, 'updated_datatype_2' => $this->updated_datatype_2, 'updated_datatype_3' => $this->updated_datatype_3, 'updated_datatype_4' => $this->updated_datatype_4, 'updated_datatype_5' => $this->updated_datatype_5, 'updated_datatype_6' => $this->updated_datatype_6, 'updated_datatype_7' => $this->updated_datatype_7, 'updated_datatype_8' => $this->updated_datatype_8, 'updated_datatype_9' => $this->updated_datatype_9, 'visitor_referrer' => $this->visitor_referrer, 'iptype' => $this->iptype, 'updated_at' => $this->updated_at, 'created_at' => $this->created_at, 'visitor_regtime' => $this->visitor_regtime, 'month_cron' => $this->month_cron]); $query->select([StatVisit::tableName() . '.*', 'COUNT(' . StatVisitDetails::tableName() . '.vid) as count']); $query->groupBy(StatVisit::tableName() . '.id'); $query->orderBy('updated_at desc'); $query->leftJoin(StatVisitDetails::tableName(), StatVisit::tableName() . '.id = ' . StatVisitDetails::tableName() . '.vid'); $query->andFilterWhere(['like', 'idvisitor', $this->idvisitor])->andFilterWhere(['like', 'location_ip', $this->location_ip])->andFilterWhere(['like', 'visitor_username', $this->visitor_username])->andFilterWhere(['like', 'visitor_datatype_0', $this->visitor_datatype_0])->andFilterWhere(['like', 'visitor_datatype_1', $this->visitor_datatype_1])->andFilterWhere(['like', 'visitor_datatype_2', $this->visitor_datatype_2])->andFilterWhere(['like', 'visitor_datatype_3', $this->visitor_datatype_3])->andFilterWhere(['like', 'visitor_datatype_4', $this->visitor_datatype_4])->andFilterWhere(['like', 'visitor_datatype_5', $this->visitor_datatype_5])->andFilterWhere(['like', 'visitor_datatype_6', $this->visitor_datatype_6])->andFilterWhere(['like', 'visitor_datatype_7', $this->visitor_datatype_7])->andFilterWhere(['like', 'visitor_datatype_8', $this->visitor_datatype_8])->andFilterWhere(['like', 'visitor_datatype_9', $this->visitor_datatype_9])->andFilterWhere(['like', 'iptext', $this->iptext]); return $dataProvider; }
public static function findVisitor($idvisitor) { $row = StatVisit::find()->where(['idvisitor' => $idvisitor])->one(); return $row; }
public static function findVisitor($idSite, $configId, $idVisitor) { $row = StatVisit::find()->where(['config_id' => $configId])->andWhere(['idsite' => $idSite])->one(); return $row; }