Пример #1
0
 /**
  * Когда все ссылки обработаны
  * @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;
 }