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

  • Автор темы Автор темы yeastor
  • Дата начала Дата начала

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);

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

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

если по другому то IMHO только xmlreader ;)
 
А XPath не переписать по другому, чтобы не просматривать скрипту все <table> в документе? ИМХО, оно из-за него и выжирает память.
 
FB3
$dom->loadHTMLFile("file.html");
выжирает память
потому что дерево строится

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

AiX
SAX парсером тоже можно, xmlreader'ом все таки по проще будет IMHO
 
потому что xpath выражение может дополнительно пытаться выделять память под всякие temporary nodeset или node frarments и т.п.
 
Сверху