@hiatos_geter

Каким способом можно сделать PARSER в Symfony?

Добрый день.
Недавно начал работать с Symfony.
И возникла задача написать свой XML-parser.

т.е. есть XML файл порядка весом 200 мб с более чем 40 тыс. записями.
Парсинг такого файла занимает некое количество времени.
То бишь циклом проходится по всем строкам файла и т.д.

И суть вопроса такого каким методом можно парсить в фоновом режиме файл?
Ключевое слово в фоновом.

т.е. берем загружаем файл нас перенаправляет на главную страницу (например) и показывает окошко идет процесс загрузки/парсинга файла.

Заранее спасибо.
Если не сложно немного описать процесс как это делать.
  • Вопрос задан
  • 768 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Flying
Парсинг больших файлов осуществляется в потоковом режиме. Для XML существует стандарт потокового парсинга - SAX. В PHP есть стандартный модуль, реализующий SAX через libxml2.

Для реализации именно фоновой обработки может быть множество различных подходов в зависимости от вашего приложения: это и банальный запуск задач по cron'у и организация очередей и т.п., есть масса информации по этому вопросу.

Если вам нужна информация о прогрессе - то очевидно что вам будет необходим некий канал связи между фоновым процессом обработки, сервером и клиентом. Опять же вариантов реализации может быть много, кроме того ваше желание показывать прогресс в целом ставит под сомнение необходимость для вас именно фоновой обработки.

Также хочу заметить что парсинг 200мб XML - не та задача которая требует отображения прогресса т.к. сам процесс парсинга будет занимать максимум единицы секунд, а скорее ещё быстрее. Больше времени может уйти на загрузку этого файла, или сохранение / обработку данных, полученных из XML, возможно вы это имели в виду?
Ответ написан
Ваш ответ на вопрос

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

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