/** * 获取每个表的最大ID,最小ID * @return [type] [description] */ public function getId() { unset(\Data\Library\Db::$dbPool['0']); $min = $max = array(); foreach ($this->setting as $tablename => $taskNum) { $modelObj = \Data\Models\Models::getObj($tablename); $dbType = !empty($modelObj->readDbName) ? $modelObj->readDbName : 'read'; $tableNameStr = str_replace(".", "_", $tablename); //解决库重名时desc table出错的问题 $realTableName = $modelObj->getTablename(); //获取表主键名字 $descSql = "desc {$realTableName}"; $row = \Data\Library\Db::exeSql($dbType, $descSql, 1); $primiaryKey = current($row['0']); //查出最小ID $sql = "select * from {$realTableName} order by {$primiaryKey} ASC limit 0,1"; $row = \Data\Library\Db::exeSql($dbType, $sql, 1); $min[$tableNameStr] = empty($row['0']) ? 0 : intval(current($row['0'])); //查出最大ID $sql = "select * from {$realTableName} order by {$primiaryKey} DESC limit 0,1"; $row = \Data\Library\Db::exeSql($dbType, $sql, 1); $max[$tableNameStr] = empty($row['0']) ? 0 : intval(current($row['0'])); } unset(\Data\Library\Db::$dbPool['0']); return array($min, $max); }
public function run($tablename, $startid, $endid, $taskid, $ser = '') { $this->tablename = $tablename; $this->startid = $startid; $this->endid = $endid; $this->taskid = $taskid; $this->modelObj = \Data\Models\Models::getObj($tablename); //获取Models对象 if (!empty($ser)) { $this->modelObj->setSwooleSer($ser); } try { $srcData = $this->readRs(); //从源表中读取数据 if (empty($srcData)) { return true; } $newData = array(); foreach ($srcData as $key => $row) { $newRs = $this->analysisRs($row); //做数据格式转换 if ($newRs !== false) { $newData[$key] = $newRs; } } $this->writeRs($newData); //将数据写入目标数据表 if ($this->modelObj->callbackRow == 'src') { $this->modelObj->callback($srcData); } elseif ($this->modelObj->callbackRow == 'desc') { $this->modelObj->callback($newData); } elseif ($this->modelObj->callbackRow == 'merge') { $mergeData = array(); foreach ($srcData as $key => $value) { if (isset($newData[$key])) { $mergeData[$key] = array_merge($value, $newData[$key]); } } $this->modelObj->callback($mergeData); } } catch (\Exception $e) { error_log("\nerror:" . $e->getMessage(), 3, "error.log"); return false; } return true; }