示例#1
0
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);
}
示例#2
0
    $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>";