Allowed memory size большой xml (html)

yeastor

Новичок
Allowed memory size большой xml (html)

Есть html файл, который надо отпарсить, при этом его вес сотставляет 40 Мб, пробую так
PHP:
$dom = new DomDocument(); 
$dom->loadHTMLFile("file.html");


$table_1 = $dom->getElementsByTagName('table')->item(0);

$xp = new domxpath($dom);
$td_1 = $xp->query("//table/tr/td/table/tr/td",$table_1);
Скрипт вылетает с ошибкой:

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 25165824 bytes) in line 21

строка 21 это -
PHP:
$td_1 = $xp->query("//table/tr/td/table/tr/td",$table_1);
Как можно решить данный вопрос?
 

yeastor

Новичок
memory_limi = 128M можно как-нибудь его увеличить до большего размера?

иным методом - каким например?
 

slach

Новичок
да я надеюсь такой файл парсить надо не чаще одного раза в неделю =) и файл такой ОДИН

если по другому то IMHO только xmlreader ;)
 

FB3

Новичок
А XPath не переписать по другому, чтобы не просматривать скрипту все <table> в документе? ИМХО, оно из-за него и выжирает память.
 

slach

Новичок
FB3
$dom->loadHTMLFile("file.html");
выжирает память
потому что дерево строится

а не xpath
который потом по этому дереву бегает

AiX
SAX парсером тоже можно, xmlreader'ом все таки по проще будет IMHO
 

FB3

Новичок
Автор оригинала: slach
FB3
$dom->loadHTMLFile("file.html");
выжирает память
потому что дерево строится
А почему тогда падает на xPath выражении, а не на этой строчке?
 

slach

Новичок
потому что xpath выражение может дополнительно пытаться выделять память под всякие temporary nodeset или node frarments и т.п.
 
Сверху