Экспорт/Импорт товаров в Excel (esol.importexportexcel)
Ссылка на модуль - https://marketplace.1c-bitrix.ru/solutions/esol.importexportexcel/
Документация - https://esolutions.su/docs/kda.importexcel/
Ускорение работы модуля Excel / решение прерывания работы модуля без видимой ошибки
Столкнулись с проблемой, при выгрузке объемного файла ( обновление более 40 000 товаров), переодически прерывалась выгрузка уведомление об ошибке на указанную почту не приходило. Прерывание было хаотичным то несколько дней подряд, то один раз в несколько недель. Время полной удачной выгрузки занимало 8-12 часов.
Был получен ответ от тех поддержки
«Да, к сожалению, такое возможно, когда скрипт прерывается по причине какой-то ошибки и php не может корректно завершить работу, вызвав необходимые обработчики по завершению скрипта.
Чаще всего это возникает из-за нехватки памяти. Нехватка памяти может проявляться из-за многократного вызова некоторых API-методов Битрикса, т.к. в ядре Битрикс многие методы не оптимальны по расходу памяти.»
В нашем случае было предложено следующее решение проблемы
Так как идентификация настроена по артикулу, вызывается стандартный метод CIblockElement::GetList, который плохо работает с памятью.
В PHP строке прописать
CREATE INDEX `ix_iblock_element_prop_val` ON b_iblock_element_property (`VALUE`(255),`IBLOCK_PROPERTY_ID`)
PHP строка находится по пути - админ панель - настройки - инструменты - командная PHP-строка (адрес сайта/bitrix/admin/php_command_line.php )
При наличии такого индекса модуль будет искать товары при помощи другого API-метода, который работает намного быстрее и с минимальным расходом памяти.
Результат: Выгрузка проходит за 8 минут. За время тестирования более прерываний не наблюдалось