/** * Запуск переиндексации указанной области */ public static function index_area($area_string, $runner_type = nc_search::INDEXING_NC_CRON) { $area = new nc_search_area($area_string); // task: состояние сессии переиндексации $task = new nc_search_indexer_task(array('area' => $area, 'rule_id' => $area->get('rule_id'), 'runner_type' => $runner_type)); $task->save(); // runner: стратегия $runner_classes = array(nc_search::INDEXING_NC_CRON => 'nc_search_indexer_runner_console', nc_search::INDEXING_CONSOLE => 'nc_search_indexer_runner_console', nc_search::INDEXING_BROWSER => 'nc_search_indexer_runner_web', nc_search::INDEXING_CONSOLE_BATCH => 'nc_search_indexer_runner_batch'); if (!isset($runner_classes[$runner_type])) { throw new nc_search_exception("nc_search_indexer::index_area(): wrong runner type '{$runner_type}'"); } $runner_class = $runner_classes[$runner_type]; $indexer = new nc_search_indexer(); return $indexer->start($task, new $runner_class()); }