/** * Работает ли в данный момент переиндексация? * @param bool $remove_hung_tasks * @return false|nc_search_indexer_task */ public static function get_current_task($remove_hung_tasks = true) { $tasks = nc_search::load_all('nc_search_indexer_task', true); if (!sizeof($tasks)) { return false; } // не подвисли ли мы? $task = $tasks->first(); if ($remove_hung_tasks && time() > $task->get('last_activity') + nc_search::get_setting("IndexerRemoveIdleTasksAfter")) { $task->delete(); $db = nc_Core::get_object()->db; $db->query("TRUNCATE TABLE `Search_Link`"); $db->query("TRUNCATE TABLE `Search_LinkReferrer`"); nc_search::log(nc_search::LOG_ERROR, "Indexer task was last active at " . strftime("%Y-%m-%d %H:%M:%S", (int) $task->get('last_activity')) . ". Task removed."); return false; } return $task; }
/** * (Separate method to make testing easier) * @return nc_search_data_persistent_collection of nc_search_field */ protected function get_field_settings() { return nc_search::load_all('nc_search_field'); }