pechatnov
@pechatnov
Bitrix developer

Кому попадалась или может у кого есть в свободном доступе годная выгрузка csv для импорта каталога под Битрикс?

Требуется написать импорт для каталога с товарами и торговыми предложениями. В основном текстовые простые свойства. Нужна очень высокая скорость, чтобы 20 000 товаров за один шаг на кроне обновлять на сервере минут за 20. Пробовал импорт битрикса csv из коробки. Работает только для 5 000 товаров нормально, но торговые предложения нефига не работают. Перезатираются. Был ли у кого опыт написания подобного импорта и может есть какие то наработки или пожелания, советы как написать качественно. Сайт уже работает в проде. Не хочу базу затереть случайно.
Хочу написать 3 импорта, на создание/обновление товаров, торговых предложений, цен товаров. И чтобы это можно было вешать на крон, ну и посетители могли зайти. Сейчас со стандартным импортом работает по похожей логике.

P.S. Огромная просьба - не оскорбляете битрикс и не предлагайте свои любимые фреимворки, а предложите если есть свои идеи и примерную последовательность в написании скрипта.
  • Вопрос задан
  • 189 просмотров
Решения вопроса 1
Берясь за написания импорта я обычно стараюсь думать не о том как побыстрее обновить побольше товаров, а о том, как побольше товаров не обновлять.
Первая и самая простая оптимизация добавить к свойствам товаров еще одно - HASH и писать туда md5 от сереилазованного массива которым вы хотите обновить товар. Дальше, при следующем обновлении вы перед Update будете вычислять от сериалазованного массива которым хотите обновить товар, этот Hash и обновлять товар только если он не совпадает с сохраненным хэшем и записывать этот новый хэш.
Такая схема очень удобна в случае если источник не умеет отдавать только изменившиеся товары или товар состоит из нескольких элементов ИБ (Товар+Торговое предложени+Элемент свойств). Кроме того помним что цена тоже хранится отдельной сущностью и для нее можно провернуть тот же трюк. Вычислить md5 прямо сильно быстрее чем сделать запись.

Кроме того следите за тем чтобы вашем кастомном импорте не было ничего кроме записи в update внутри цикла. А то всякое видеть приходилось.

Вообще записать 1000 товаров за минуту в базу, без картинок - это полная ерунда. Должно хватить любой производительности, если конечно не выяснится что у вас не 100 ТП к каждому товару.

И да - убедитесь, что и товары и ТП и все ИБ в которые вы пишите во время импорта хранят свойства в отдельных таблицах, а не в общей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы