Создание условий импорта и работа модуля импорта в целом

Добрый день, скажите, а как можно задать условия при импорте товаров из CSV? Например, если данный товар уже существует, то какие-то поля не применять(например, не перемещать из категории).

И еще такой вопрос, что может быть не так в настройках на сервере, если импорт происходит очень медленно? Например, импортирую файл, из полей только Product code, Language,Product type,Category. Разделитель - табуляция, 23000 строк, импортируется более двух часов, после чего срабатывает таймаут на работу php-скрипта, а файл импортирован лишь на треть. Понятно, что можно увеличить время выполнения скриптов, но проблема то явно не в них. Сервер - виртуалка, 4 ядра Xeon E5, 4GB, 160GB SSD. Вроде как не должно быть настолько медленно. Где можно искать проблему?

Использую старый модуль импорта.

сколько виртуалка выделяет ресурсов непосредственно под одно подключение и в общем? Сколько клиентов висит на одной виртуалке?

В данный момент на виртуалке я один - сайт в разработке, есть другой сайт на CS-Cart, где всегда всё было так же долго, но там не критично. Сколько ресурсов на одно подключения… сложно сказать, вот мне и хотелось бы понять, что хостеру сказать. Сам сайт летает, если включить кеширование то стабильно гугл спиид сайт проказывает 95 баллов. А вот работать с админкой невозможно, постоянно тормозит. Многие модули, например “Интеллектуальный подбор связанных товаров” от AlexBranding открываются тоже секунд по 5-10. Я бы к ним пошел спрашивать, но зная что в админке очень многое работает медленно, явно что вопросы не к ним.

в смысле на виртуалке вы один? То есть у хостера сервер, от которого он выделил вам кусок, и больше на этом физическом сервере ни одного сайта?
вот тут проверьте
https://2ip.ru/domain-list-by-ip/

Может физически на сервере что-то еще и есть, но на моём ip(он привязан к виртуалке) нет ничего, и за выделенные на виртуальную машину ресурсы я не переживаю. Да и, у меня есть еще сайт на CS-Cart, который вообще на выделенном сервере висит(с 16GB оперативной памяти и тоже на SSD), у этого же хостера, где физически на том же железе нет никого, и результат ровно такой же. Фронтенд летает, а импорт товаров сильно тормозит. Вопрос именно к настройкам(настраивал сервер один человек, это эти сайты объединяет), из-за чего может быть такое что ресурсов много, сам сайт летает, а в операциях где много запросов к БД(судя по всему) какие-то дикие тормоза.

Единственно что могу сказать - самый большой тормоз здесь - это обратная связь, тот самый ползунок прогресса, который в процессе импорта постоянно обменивается запросами с сайтом. Вообще любая команда даже в консоли без визуализации хода работы выполняется на порядок быстрее, чем с визуализацией. Я когда отдаю раз в месяц сайту новые товары на создание - окола 100 штук - секунд 30 выполняется. Обновление количества и цен - 1С вызывает мой скрипт передавая ему сформированный файл - ответ о выполнении обработки 2 тысяч товаров приходит через минуту уже.

А его можно отключить? Может что-то в коде можно закомментить? Мне он в общем-то нужен как собаке второй хвост, работало бы быстро…

не знаю, не вникал в процесс импорта, может кто знающий подскажет

Вот как бы этот процесс ускорить… но есть сомнение - было бы дело в ползунке - понятно, но ведь и так многие функции в админке тормозят, кроме импорта. Сдается мне что есть еще что-то, что я упускаю.

доступ по ssh есть к серверу? htop поставить можете? или может он уже установлен - отлично показывает использование ресурсов. Если поставить нельзя и хостер заупрямится - можно и просто по top запустить
кстати, узнать ip сервера - сделайте tracert домен из командной строки в виндовс или traceroute домен - linux/mac

Конечно, доступ по ssh есть, но сам я вряд ли что-то поставлю - я с линуксом не дружу. А по трасерту - первый хоп после сервера не отзывается, второй - уже провайдер. Но кажется уже понял о чем просить, скорее всего надо настройки mysql поправить.

В общем, вопрос с производительностью модуля решен. Но остались вопросы по возможности добавления условий импорта.

Чтобы импорт заработал исправил в файле app/controllers/backend/exim.php строку fn_define(‘DB_LIMIT_SELECT_ROW’, 30); на
fn_define(‘DB_LIMIT_SELECT_ROW’, 10000);
И всё заработало во много раз быстрее, без каких-либо правок настроек сервера.

Опытными разработчиками штука не проверена, я вообще не программист, однако у меня работает. Возможно кому-то надо будет поставить менее экстремальные значения, а не 10 000(ну не просто же так разработчики только 30 указали).

1 лайк

Один буржуйский товарищ из места учебы Петра на прошлой неделе импортировал 1.5М продуктов в CS-Cart и собирается еще 15М туда же. Если нужно, спросим у него что надо сделать для этого.

1 лайк

Очень было бы интересно, буду благодарен! Все мои попытки попытки импортировать сколько-либо существенное количество номенклатуры разом потерпели неудачу, а все открытия и выводы о том как увеличить производительность этого процесса оказались или полностью ошибочными, или недостаточными(скорее первое). Потом решил отказаться от такого подхода и перешел на импорт номенклатуры из 1С, но и там столкнулся с проблемами примерно такого же характера. Примерно после 10 000 позиций начались глюки, номенклатура перестала импортироваться полностью, причем даже по отдельно взятым категориям, даже если номенклатуры в ней не много. Но цены и остатки обновляются без проблем - уже хоть что-то. Быть может проблемы импорта имеют какую-то общую проблему, было бы замечательно узнать.

У нас ведутся сейчас работы по модулю для актуализации остатков и цен, тестировали на магазине клиента, как раз 1.5 млн единиц было в прайсе, обработка примерно 10 минут заняла. Причем был ужасного формата XML.
К типовому импорту никакого отношения не имеет, если интересно - напишите в личку, можем организовать демо. Но модуль не импортирует товары, он для магазинов которым требуется автоматизация прайсов.

У него сейчас все страшно тормозит, иногда 30 с. Проблему будет решать при помощи индексов и кластеров. Но выгрузил же. 12 ядер и 16 GB RAM на SSD. Говорит на Дхармамегха (Облако Добродетели) Амазона 6 раз быстрее все.

У меня более простые запросы, связанные с вульгарным импортом продуктов
https://forum.cs-cart.com/topic/54083-how-to-create-a-new-import-layout/

Пользуюсь случаем прилюдно поблагодарить за удивительный модуль, который нам сэкономит позицию технического редактора.

https://marketplace.cs-cart.com/add-ons/site-management/nezapolnennye-tovary.html

1 лайк

А мне сейчас экспорт-импорт нужен лишь для каких-то особых правок, только на случай если что-то пошло совсем не так, или удобнее для каких-то своих целей выгрузить информацию из магазина, чем из 1С. Обновление цен смысла делать не много(ну, только если какая-то хитрая своя система учета, у нас такое на каком-то этапе предполагалось) - надо для этого сначала в чем-то сопоставить номенклатуру с номенклатурой поставщиков(где в реальности могут не совпадать штрихкоды, артикулы и наименования - без справочника соответствующего и ручного сопоставления не совместить), определить цены и остатки на основе цен разных поставщиков, с различными условиями, плюс ценами конкурентов, а после уже выгружить в магазин. Иных вариантов провести актуализацию цен и остатков и при этом не накосячить, кроме как средствами 1С и модулей для нее, придумать не удалось.

Я вас понял. У нас получилась CRM для cs-cart по работе с прайсами - с поддержкой XLS, XML форматов. Я просто сам это проходил, и не раз. 1с слишком топорный для этого.

Топорный - не то слово. Но оно всё-равно есть и сложно от него куда-то деться. В общем-то помогает в работе Мегапрайс. Рекомендовать мне совесть не позволяет, очень уж специфический продукт, но и иной полнофункциональный аналог мне не попадался. Но инструмент явно не для ограниченных в ресурсах начинающих. Хотелось бы найти решение которое можно использовать для личных проектов, у меня такого нет.