PHP работает с XMLReader с огромным источником данных

67
9

Мне нужно проанализировать ginormous источник данных (14.9M строк XML, 1.7GB).

У меня возникают проблемы с работой с XMLReader. Мне раньше не требовалось ничего, кроме SimpleXML, но, учитывая, что я действительно не могу загрузить этот whopper в память, мне нужно будет сделать это через поток.

Я написал этот код:

<?php

$xml = new XMLReader();
$xml->open('public.xml');

while($xml->read())
{
echo '.';
}
$xml->close();
?>

Но у меня проблемы с исполнением. А именно, я получаю "Неустранимая ошибка: превышено максимальное время выполнения 30 секунд..."

Когда я устанавливаю set_time_limit (600), браузер просто падает.

Он сбой, потому что он не может обрабатывать число ".". создан?

Что вы здесь посоветуете? В конечном счете, мне нужен этот XML файл в реляционной базе данных. Я проверяю возможности, прежде чем я углубится в детали схемы.

спросил(а) 2013-02-12T01:43:00+04:00 7 лет, 4 месяца назад
1
Решение
55

Он сбой, потому что он не может обрабатывать число ".". создан?

Чтобы проверить это, просто попробуйте его без echo '.'; ,
Поскольку вам нужно много ОЗУ для этого увеличения максимальной памяти, которую может использовать скрипт. В конечном счете разделить XML файл на более мелкие части и обработать их последовательно.

В конце концов посмотрите:

ответил(а) 2013-02-12T01:57:00+04:00 7 лет, 4 месяца назад
39

Вы также должны расширить Ограничение памяти для PHP.

ответил(а) 2013-02-12T01:46:00+04:00 7 лет, 4 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема