function IndexTemporaryTables() { return $this->_xml_file->IndexTemporaryTables(); }
/** * <p>Индексация таблиц для ускорения доступа. Необходимо вызвать после загрузки данных из файла в таблицы БД, но до обработки этих данных. Метод динамичный. <br></p> * * * @param bool $with_sess_id = false Если значение <i>true</i>, то будут создаваться временные таблицы с * поддержкой нескольких сессий "одновременного" импорта. Введён * для совместимости. Необязательный параметр. * * @return bool <p>Если во время создания индексов произойдет ошибка БД, метод * вернет false.</p> * * <h4>See Also</h4> * <ul> <li><a href="http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockxmlfile/index.php">CIBlockXMLFile</a></li> * </ul><br> * * * @static * @link http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockxmlfile/indextemporarytables.php * @author Bitrix */ public static function IndexTemporaryTables($with_sess_id = false) { if (!is_object($this) || strlen($this->_table_name) <= 0) { $ob = new CIBlockXMLFile(); return $ob->IndexTemporaryTables(); } else { global $DB; $res = true; if ($with_sess_id) { if (!$DB->IndexExists($this->_table_name, array("SESS_ID", "PARENT_ID"))) { $res = $DB->DDL("CREATE INDEX ix_" . $this->_table_name . "_parent on " . $this->_table_name . "(SESS_ID, PARENT_ID)"); } if ($res && !$DB->IndexExists($this->_table_name, array("SESS_ID", "LEFT_MARGIN"))) { $res = $DB->DDL("CREATE INDEX ix_" . $this->_table_name . "_left on " . $this->_table_name . "(SESS_ID, LEFT_MARGIN)"); } } else { if (!$DB->IndexExists($this->_table_name, array("PARENT_ID"))) { $res = $DB->DDL("CREATE INDEX ix_" . $this->_table_name . "_parent on " . $this->_table_name . "(PARENT_ID)"); } if ($res && !$DB->IndexExists($this->_table_name, array("LEFT_MARGIN"))) { $res = $DB->DDL("CREATE INDEX ix_" . $this->_table_name . "_left on " . $this->_table_name . "(LEFT_MARGIN)"); } } return $res; } }
$fp = fopen($ABS_FILE_NAME, "rb"); $total = filesize($ABS_FILE_NAME); if ($total > 0 && is_resource($fp)) { $obXMLFile = new CIBlockXMLFile(); if ($obXMLFile->ReadXMLToDatabase($fp, $NS, $arParams["INTERVAL"])) { $NS["STEP"] = 3; $strMessage = GetMessage("CC_BSC1_FILE_READ"); } else { $strMessage = GetMessage("CC_BSC1_FILE_PROGRESS", array("#PERCENT#" => $total > 0 ? round($obXMLFile->GetFilePosition() / $total * 100, 2) : 0)); } fclose($fp); } else { $strError = GetMessage("CC_BSC1_FILE_ERROR"); } } elseif ($NS["STEP"] == 3) { if (CIBlockXMLFile::IndexTemporaryTables()) { $strMessage = GetMessage("CC_BSC1_INDEX_CREATED"); $NS["STEP"] = 4; } else { $strError = GetMessage("CC_BSC1_INDEX_CREATE_ERROR"); } } elseif ($NS["STEP"] == 4) { $obCatalog = new CIBlockCMLImport(); $obCatalog->InitEx($NS, array("files_dir" => $WORK_DIR_NAME, "use_crc" => $arParams["USE_CRC"], "preview" => $preview, "detail" => $detail, "use_offers" => $arParams["USE_OFFERS"], "force_offers" => $arParams["FORCE_OFFERS"], "use_iblock_type_id" => $arParams["USE_IBLOCK_TYPE_ID"], "translit_on_add" => $arParams["TRANSLIT_ON_ADD"], "translit_on_update" => $arParams["TRANSLIT_ON_UPDATE"], "translit_params" => $arTranslitParams, "skip_root_section" => $arParams["SKIP_ROOT_SECTION"], "disable_change_price_name" => $arParams["DISABLE_CHANGE_PRICE_NAME"])); $result = $obCatalog->ImportMetaData(array(1, 2), $arParams["IBLOCK_TYPE"], $arParams["SITE_LIST"]); if ($result === true) { $strMessage = GetMessage("CC_BSC1_METADATA_IMPORTED"); $NS["STEP"] = 5; } elseif (is_array($result)) { $strError = GetMessage("CC_BSC1_METADATA_ERROR") . implode("\n", $result); } else {