public function onTask($serv, $task_id, $from_id, $param) { //处理数据表tablename中ID>=$startid && $ID<$startid+100的记录 list($tablename, $startid, $endid, $taskid) = $param; if ($tablename == "delDb" && ($startid = -1 && ($endid = -1))) { //删除mysql连接请求 \Data\Library\Db::delDbPool($taskid); return false; } echo "\n OnTask: {$taskid} \t {$tablename} \t {$startid} - {$endid} "; $obj = new Library\SwitchData(); $rs = $obj->run($tablename, $startid, $endid, $taskid, $serv); while (!$rs) { //执行出错时,一直重试。关闭数据库连接,sleep 5秒 \Data\Library\Db::delDbPool($taskid); echo "\n 处理出错,重新连接mysql \n"; sleep(5); $rs = $obj->run($tablename, $startid, $endid, $taskid); } if ($startid + 1 == $endid) { //增量更新,处理完成后不再重新处理 return array($taskid); } return $taskid; }
/** * 将数据写到目标数据库 * @param [type] $newData [description] * @return [type] [description] */ public function writeRs($newData) { if (empty($newData)) { return ''; } $fieldarray = array_keys(current($newData)); $fields = implode(",", $fieldarray); $sql = "replace into {$this->modelObj->descTable} " . "(" . $fields . ") VALUES"; foreach ($newData as $line) { $sql .= "\n("; foreach ($line as $field) { $sql .= "'" . addslashes($field) . "',"; } $sql = substr($sql, 0, -1) . "),"; } $sql = substr($sql, 0, -1); $rs = \Data\Library\Db::exeSql($this->modelObj->writeDbName, $sql, $this->taskid); }