xml — проблема с ограничением памяти Php при удалении огромного файла

Я собираю этот огромный XML-файл (300 Кбайт ~ 11 МБ) с помощью Simple Html Dom, и у меня возникают проблемы с ограничением памяти. Поэтому я добавил несколько команд php.ini, чтобы переопределить настройки по умолчанию и включить полный контроль над памятью. Плохая идея.

Мой код:

include('simple_html_dom.php');
ini_set('memory_limit', '-1');
ini_set('max_execution_time', '-1');
$xml = file_get_contents('HugeFile.xml');
$xml2 = new simple_html_dom();
$xml2->load($xml);

foreach($xml2->find('tag1') as $element) {
$element->innertext = str_replace('text to replace','new text',$element>innertext);

}

$html->save('output'.xml');
}

Теперь, есть ли способ заставить этот скрипт работать плавно в разумные сроки без каких-либо проблем с памятью?
Это легко сделать с помощью текстового редактора, но мне нужно автоматизировать его, так как у меня есть много файлов для редактирования.

2

Решение

Нашел лучший способ сделать это: нет необходимости в DOM здесь, я просто str_replace вещи внутри строки, возвращаемой file_get_contents затем поместите его в другой файл с file_put_contents, Просто и аккуратно:

$xml = file_get_contents('HugeFile.xml');
$new = str_replace('text to replace','new text',$xml);
file_put_contents('output.xml');

А также preg_replace может пригодиться для сложных модификаций.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]