/** * Do the synchronization job, limited to some amount of work * This verb has been designed to be called from within a separate process * @return true if the process has to be continued */ public function DoSynchronizeChunk($oLog, $oChange, $iMaxChunkSize) { // Initialize the structures... self::$m_oCurrentTask = $this->m_oDataSource; $this->m_oStatLog = $oLog; $this->m_oChange = $oChange; // Prepare internal structures (not the first pass) $this->PrepareProcessing(false); $iCurrJob = $this->m_oStatLog->Get('status_curr_job'); $iCurrPos = $this->m_oStatLog->Get('status_curr_pos'); $this->m_oStatLog->AddTrace("Synchronizing chunk - curr_job:{$iCurrJob}, curr_pos:{$iCurrPos}, max_chunk_size:{$iMaxChunkSize}"); $bContinue = false; switch ($iCurrJob) { case 1: default: $this->DoJob1($iMaxChunkSize, $iCurrPos); $bContinue = true; break; case 2: $this->DoJob2($iMaxChunkSize, $iCurrPos); $bContinue = true; break; case 3: $bContinue = $this->DoJob3($iMaxChunkSize, $iCurrPos); break; } $this->m_oStatLog->DBUpdate($this->m_oChange); self::$m_oCurrentTask = null; return $bContinue; }