@goldfox_ru

Как работать в php с большим xml?

Всех приветствую. Есть файл xml с товарами. Размер файла 37 МБ, строк в файле 371к (плюс минус 25к значений). Тобишь в данном файле хранятся товары. Когда я обрабатываю xml и заношу в базу данных - всё данное дело зависает намертво и очень и очень долго грузит. Каким образом лучше реализовать залив в базу данных при таком xml файле?
  • Вопрос задан
  • 168 просмотров
Пригласить эксперта
Ответы на вопрос 3
link_web
@link_web
Magento, Laravel, Zend, Shopify, Prestashop, WP
Вам стоит обратить внимание на yield в PHP. Можете погуглить , что это. Здесь тоже был вопрос. И переделать код используя yield для более точного считывания файла по частям
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
почитай про долгие контроллеры/экшены, если вкратце, то контроллер разбивает задачу на шаги/блоки каждый из которых займет меньше времени чем макс. время выполнения скрипта и потом пошагово обрабатывает файл - ajax/cron запросы к контроллеру повторяются до тех пор, пока не будут выполнены все шаги/блоки.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Самое простое после использования готового XML-парсера - написать такой парсер самому. Построчно читать файл, структура очень "жесткая", можно справиться даже через substr(), а с preg_match() - так вообще как два пальца... Построчная обработка не займёт память, просто будет много (370 тысяч) INSERT-запросов к базе данных. Или займет, если сделать накопление в буффере по 2-3-5-10-100-1000-10000 запросов...
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы