/** * Когда все ссылки обработаны * @param bool $is_cancelled * @return integer nc_search_indexer::TASK_FINISHED */ public function finalize($is_cancelled = false) { $task = $this->task; if ($is_cancelled) { $this->query_db("UPDATE `Search_Document` SET `ToDelete` = 0 WHERE `ToDelete` = 1"); } else { $absent_document_count = $this->remove_absent_documents(); $task->set('total_deleted', $absent_document_count); } // we're done with the index $this->index->commit(); $this->index->optimize(); // save broken links $this->save_broken_links(); // save indexing session statistics (rule) $rule = $task->get_rule(); if ($rule) { $rule->set('last_start_time', $task->get('start_time'))->set('last_finish_time', time())->set('last_result', array('processed' => $task->get('total_processed'), 'checked' => $task->get('total_checked'), 'not_found' => $task->get('total_not_found'), 'deleted' => $task->get('total_deleted')))->save(); // schedule next run } // remove the task $task->delete(); // также очистим историю заодно nc_search::purge_history(); nc_search::purge_log(); // отчитаемся о проделанной работе nc_search::log(nc_search::LOG_INDEXING_BEGIN_END, "Ended indexing area '{$this->get_area()}'"); return self::TASK_FINISHED; }