Example #1
0
 /**
  * 获取每个表的最大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);
 }
Example #2
0
 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;
 }