Как ускорить импорт товаров

[16 июля 2019 г.]    Российская сборка Magento 2.52.2
Magento 2: модули и услуги
magereport.com: составление перечня необходимых для установки заплаток SUPEE
#1 Дмитрий Федюк
  • Администратор
  • Иконка
  • Группа: Администратор
  • Сообщений: 8995
  • Регистрация: 20.02.2010

26.02.2011 06:37

Когда вы записываете товар в базу данных, Magento оповещает об этом событии все модули системы, и те, в свою очередь, могут выполнить и выполняют некие операции.
В частности, системные модули перестраивают вспомогательные справочники системы в соответствии с новой товарной информацией.
Это хорошо и удобно, но только замедляет массовый импорт, который при этом работает так: записали один товар - система перестроила справочники, записали второй товар - система снова перестроила справочники.
Чтобы этого избежать, перед вызовом для товара метода 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 такие свойства добавлены. Никакие системные файлы при этом не трогаются, просто стандартные классы для перестройки вспомогательных справочников унаследованы и перекрыты, что и даёт ускорение импорта.

Поделиться темой: