where('1=1')->offset($offset)->limit(self::LIMIT)->asArray()->all(); if($allUserData){ $insertData = []; foreach($allUserData as $data){ unset($data['ROWNUMID'], $data['PARTITION_DATE'], $data['PAY_PASSWORD'], $data['PASSWORD_HASH']); $userInfoData = UserInfo::findUseDbCalc()->where('USER_ID=:USER_ID', [':USER_ID' => $data['ID']])->asArray()->one(); if($userInfoData){ unset($userInfoData['ROWNUMID']); } else { continue; } $insertData[] = array_merge($data, $userInfoData); } ActiveRecord::batchInsert($insertData, '{{%USER_ALL_'.$periodNum.'}}', 'dbNetPoint'); unset($allUserData, $insertData); self::backupUserTableData($periodNum, $offset + self::LIMIT); } } /** * 备份网络数据 * @param $netType * @param $periodNum * @param int $offset * @throws \yii\db\Exception */ public static function backupNetTableData($netType, $periodNum, $offset = 0){ if($netType == 'network'){ $modelClass = UserNetwork::class; $tableName = '{{%USER_NETWORK_'.$periodNum.'}}'; } else { $modelClass = UserRelation::class; $tableName = '{{%USER_RELATION_'.$periodNum.'}}'; } $allData = $modelClass::findUseDbCalc()->where('1=1')->offset($offset)->limit(self::LIMIT)->asArray()->all(); if($allData){ $insertData = []; foreach($allData as $data){ unset($data['ROWNUMID']); $insertData[] = $data; } ActiveRecord::batchInsert($insertData, $tableName, 'dbNetPoint'); unset($allData, $insertData); self::backupNetTableData($netType, $periodNum, $offset + self::LIMIT); } } /** * 创建备份表 * @param $tableName * 不含 AR_ * @param $periodNum * 取数 */ public static function createdBakTable($tableName, $periodNum) { if($tableName == 'USER_ALL') { $fromTableName = '{{%USER_ALL_TEMPLATE}}'; $fromDb = 'dbNetPoint'; } else { $fromTableName = '{{%'.$tableName.'}}'; $fromDb = 'db'; } $createTableName = '{{%'.$tableName.'_'.$periodNum.'}}'; if(!ActiveRecord::isExistsTable($createTableName, 'dbNetPoint')){ // 创建表 ActiveRecord::createTableFromTable($createTableName, $fromTableName, [], 'dbNetPoint', $fromDb); } } /** * 删除备份的表 * @param $tableName * 不含 AR_ * @param $periodNum * 取数 */ public static function dropBakTable($tableName, $periodNum){ $dropTableName = '{{%'.$tableName.'_'.$periodNum.'}}'; if(ActiveRecord::isExistsTable($dropTableName, 'dbNetPoint')){ ActiveRecord::deleteTable($dropTableName, 'dbNetPoint'); } } }