В частности, системные модули перестраивают вспомогательные справочники системы в соответствии с новой товарной информацией.
Это хорошо и удобно, но только замедляет массовый импорт, который при этом работает так: записали один товар - система перестроила справочники, записали второй товар - система снова перестроила справочники.
Чтобы этого избежать, перед вызовом для товара метода save установите товару свойства «is_massupdate» и «exclude_url_rewrite»:
/** @var Mage_Catalog_Model_Product $product; */ $product ->setIsMassupdate(true) ->setExcludeUrlRewrite (true) ->save () ;
Это обычно в разы ускоряет операцию сохранения товара и импорта в целом.
Затем, когда вы импортируете все товары, вы можете перестроить индексы либо вручную из админки, либо с командной строки, либо прямо в программном коде.
Например, справочник веб-адресов (SEF, ЧПУ) перестраивается так:
Mage::getSingleton('catalog/url')->refreshRewrites();
Есть одно исключение.
Если вы импортируете небольшое число товаров в магазин с большим числом товаров, и товары облают большим набором фильтруемых характеристик, то тогда вам может быть разумнее перестраивать индексы для конкретного товара сразу после его записи в базу данных, чем сразу для всего магазина из 10 тысяч товаров после импорта, например, всего 5 товаров.
Подобное исключение встречается нечасто, но о нём надо знать при проектировании эффективного импорта.
Замечу, что для товарных разделов в стандартной сборке нет свойств, аналогичных свойствам товара «is_massupdate» и «exclude_url_rewrite».
Однако, в Российской сборке Magento такие свойства добавлены. Никакие системные файлы при этом не трогаются, просто стандартные классы для перестройки вспомогательных справочников унаследованы и перекрыты, что и даёт ускорение импорта.