При выгрузке из 1С базы объёмом более 40 000 многопараметрических позиций запросы в базу "повисают", из-за чего скрипт поглощает большое количество ресурсов и "умирает".[spoiler]
При этом запросы "повисают" как при полной, так и измененной выгрузке из 1С.
Анализируя и решая проблему своими силами, мы также передали её на анализ непосредственно в техподдержку 1С-Битрикс.
Техподдержка 1С-Битрикс 1 месяц пыталась найти проблему (так и не решила).
Мы же обнаружили, что "повисает" запрос именно на процессе работы с таблицой b_xml_tree. До этого случая мы уже общались с техподдержкой 1С-Битрикс и выяснили, что данная таблица временная и создаётся автоматически, когда в ней есть необходимость (т.е. ее можно удалять без ущерба работе сайта).
Провели эксперимент, в котором мы сперва удалили таблицу b_xml_tree, а после чего запустили полный импорт. Эксперимент завершился успешно. Т.е. если таблица пуста и заполняется в процессе импорта, то запросы на ней не "повисают" и выгрузки проходят успешно.
В связи с этим достаточно удалять таблицу b_xml_tree, например, через PHPMyAdmin или в компоненте импорта сделать в начале (до импорта) 1 запрос в базу:
DROP TABLE `b_xml_tree`; |
Запрос во время импорта:
Причем строки добавляются, а кусок один и тот же.
Суть проблемы оказалась намного прозаичней.
Кусок кода импорта:
ставите лимит на выполнение импорта XML файла. 0 для данного поля - решение проблемы.