Как решить проблему с лимитом времени при парсинге большого XML файла?

При парсинге XML (php с помощью XMLReader) большого количества товаров (около 10 000шт) после 30 секунд работы скрипа возникает ошибка Maximum execution time. Конечно можно увеличить допустимое время выполнения скрипта до часа например. Но есть ли более красивый способ парсинга?
  • Вопрос задан
  • 482 просмотра
Решения вопроса 1
e_svirsky
@e_svirsky
Web Developer
Как вариант можно зачитать сначала XML, потом конвертнуть его в массив. и сохранить, потом например slice-нуть массив на 5 частей, и итерациями это всё обработать. Т.е. будет 2 воркера: один конвертит файл в массив, второй обрабатывает массивы и кладёт их в БД. Это позволяет парсить достаточно большие файлы, но если файл оооочень большой (не влазит в оперативку), тогда вот тут описано неплохое решение:
stackoverflow.com/questions/911663/parsing-huge-xm...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
alex1442
@alex1442
Вынести этот процесс вы отдельный демон,а за вебзапрос только добавлять информацию о предстоящей задаче
Ответ написан
@litvin2
ini_set ( 'max_execution_time', 300 ); // 300 секунд = 5 минут

А вообще, лучше подумать, как такие здоровые файлы не парсить целиком.
Ответ написан
Вынести запуск процесса в отдельный скрипт и запускать его консольно либо по крону. Там обычно отсутствует ограничение по времени выполнения.
Ответ написан
Ваш ответ на вопрос

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

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