@vrazbros

Как распарсить очень большой файл на PHP?

Как распарсить очень большой файл на PHP? 10GB или 100GB файл, так чтобы скрипт не завис и не сожрал всех ресурсов.
  • Вопрос задан
  • 365 просмотров
Пригласить эксперта
Ответы на вопрос 4
Sanasol
@Sanasol Куратор тега PHP
нельзя просто так взять и загуглить ошибку
В зависимости от того что в файле можно рассматривать варианты работы через поток(stream).
Гуглится по этому слову собственно легко.
(xml || json || другой тип данных) streaming/stream parser/reader.
Это стандартное решение задачи с чтением файлов которые больше чем RAM.

Решение для нестандартных данных это построчное чтение или кусками через fread(т.е. тоже по сути единицы измерения это строки будут, иначе каша на выходе).

Если файл содержит супер странные данные, которые при этом неделимы и размазаны по строкам, то скорее всего увы. Либо писать свою вариацию потокового чтения и придумывать отправные точки для парсинга и навигации по файлу.
Ответ написан
Комментировать
@Kennius
Начинающий фронт-эндер
Я парсил xml дамп в 25гб добавление в базу, скрипт запускал 2 раза первый раз добавлял только id, как всё добавилось ребутал сервак, потом на основе имеющихся id в базе добавлял все остальное, железо было corei7 24гб озу, можно попробовать его разбить на несколько файлов по регулярке что бы структуру не нарушить, при разбивке писать в временный файлик строку на которой закончилась прошлая разбивка, в случае перегруза сервака можно будет начать с того же места
Ответ написан
Комментировать
demon416nds
@demon416nds
Разработчик на чем попало
да без проблем
по частям можно обработать файл любого размера
а дабы не вписаться в лимиты как по времени так и по нагрузке
нужно обрабатывать достаточно маленькими частями и с достаточными интервалами
простейший вариант
по окончании обработки кусочка выводить в браузер js который сразу или через интервал запустит продолжение обработки
типа так
echo "<script>
setTimeout(\"window.location.href='another.php?s=$strt';\", 1000)
</script>";
Ответ написан
Комментировать
@krypt3r
XMLReader
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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