simplexml_load_file проблемы с памятью

Статус
В этой теме нельзя размещать новые ответы.

lena berkova

Местный житель
Регистрация
14 Янв 2009
Сообщения
437
Реакции
21
есть пхп файл. в файле в цикле вызывается ф-я, в этой ф-ции грузятся хмл файлы через ф-ю simplexml_load_file. проблема в том, что если итераций много то скрипт валится с ошибкой
Allowed memory size of 67108864 bytes exhausted (tried to allocate 14817 bytes)

а если итераций 1-2 то все нормально отрабатывает. выходит что память накапливается. как быть?
использовался даже вариант с написанием отдельного класса и вызовом unset но тоже не пашет
 
  • Заблокирован
  • #2
Покажите исходный код, так сложно сказать куда память девается... Переменную в которой лежит фаил обнуляете?
 
При работе с DOM через simplexml в PHP5 надо обязательно вызывать деструктор сразу же, как это только возможно. Выставить в "null" dom-дерево, все ноды и всех детей и родителей. Особенно ярко эта проблема проявляется при работе с simple_html_dom.
 
есть пхп файл. в файле в цикле вызывается ф-я, в этой ф-ции грузятся хмл файлы через ф-ю simplexml_load_file. проблема в том, что если итераций много то скрипт валится с ошибкой
Allowed memory size of 67108864 bytes exhausted (tried to allocate 14817 bytes)
а если итераций 1-2 то все нормально отрабатывает. выходит что память накапливается. как быть?
использовался даже вариант с написанием отдельного класса и вызовом unset но тоже не пашет
ри работе с DOM через simplexml в PHP5 надо обязательно вызывать деструктор сразу же
ага, об этом ещё на офф сайте.
Memory leak!
Q: This script is leaking memory seriously... After it finished running, it's not cleaning up dom object properly from memory..
A: Due to php5 circular references memory leak, after creating DOM object, you must call $dom->clear() to free memory if call file_get_dom() more then once.
Example:
PHP:
$html = file_get_html(...); 
// do something... 
$html->clear(); 
unset($html);
_ttp://simplehtmldom.sourceforge.net/manual_faq.htm
Довольно неудобно. Рекомендую использовать phpQuery. Протестил на нескольких реальных примерах- прирост скорости раз в 5-10. Да синтаксис такой же как у его оригинала.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху