require_once $ROOT_FOLDER . "connect_io.php"; $nc_core = nc_Core::get_object(); $nc_core->modules->load_env('ru'); $lang = $nc_core->lang->detect_lang(); require_once $ADMIN_FOLDER . "lang/" . $lang . ".php"; error_reporting(E_PARSE | E_ERROR | E_WARNING | E_USER_ERROR | E_USER_WARNING); // замедление работы при необходимости $delay = trim(nc_search::get_setting('IndexerConsoleSlowdownDelay')); // секунды if ($delay) { define('NC_SEARCH_INDEXER_DELAY_VALUE', (int) ($delay * 1000000)); // микросекунды function nc_search_indexer_delay() { usleep(NC_SEARCH_INDEXER_DELAY_VALUE); } register_tick_function('nc_search_indexer_delay'); declare (ticks=10000); } while (@ob_end_flush()) { } nc_search::register_logger(new nc_search_logger_plaintext(nc_search::LOG_CONSOLE)); $remove_hung_tasks = !nc_search::should('IndexerConsoleRestartHungTasks'); $current_task = nc_search_indexer::get_current_task($remove_hung_tasks); $continue = $current_task instanceof nc_search_indexer_task && $current_task->get('runner_type') == nc_search::INDEXING_CONSOLE_BATCH && ($current_task->get('is_idle') || nc_search::should('IndexerConsoleRestartHungTasks') && time() > $current_task->get('last_activity') + nc_search::get_setting("IndexerRemoveIdleTasksAfter")); if ($continue) { $indexer = new nc_search_indexer(); $indexer->resume($current_task, new nc_search_indexer_runner_batch()); } else { nc_search_scheduler::run(nc_search::INDEXING_CONSOLE_BATCH); }
$this->halt(NETCAT_MODULE_SEARCH_ADMIN_INDEXING_IN_PROGRESS_ERROR, $current_task->get('area')); } nc_search::register_logger(new nc_search_logger_html()); nc_print_status(NETCAT_MODULE_SEARCH_ADMIN_INDEXING_IN_PROGRESS, 'info'); print "<div class='search_indexing'>"; while (@ob_end_flush()) { } if ($rule_id) { // первый запуск $done = $provider->index_area($rule_id, nc_search::INDEXING_BROWSER); // нам понадобится $curent_task для того, чтобы вытащить из неё token $current_task = $provider->is_reindexing(); } else { if ($continue && $current_task) { // продолжение переиндексации (после перезагрузки страницы) $indexer = new nc_search_indexer(); $done = $indexer->resume($current_task, new nc_search_indexer_runner_web()); } } // check again if we're done if (!$current_task || $done) { $stats = ""; if ($current_task) { $stats = sprintf("<br />" . NETCAT_MODULE_SEARCH_ADMIN_INDEXING_DONE_STATS, nc_search_util::format_seconds(time() - $current_task->get('start_time')), $current_task->get('total_processed'), $current_task->get('total_checked'), $current_task->get('total_not_found'), $current_task->get('total_deleted')); } nc_print_status(NETCAT_MODULE_SEARCH_ADMIN_INDEXING_DONE . $stats, 'ok'); echo "<script type='text/javascript'>\$nc(document.body).scrollTop(100000);</script>"; } else { echo "<script type='text/javascript'>", "window.location = '?continue=1&token=", $current_task->get('token'), "';", "</script>\n"; } print "</div>";