php парсинг xml

интернет программирование программы php xml

есть много небольших xml, которые надо распарсить и занести данные в б.д. использую simplexml и xpath
проблема в потреблении памяти

как можно её освободить? php 5.3.3
я делаю так, но не помогает
создается массив $mainArr
где:
$mainArr[1] = simplexmlobject
$mainArr[2] = simplexmlobject
$mainArr[3] = simplexmlobject
и т.д.
после этого идет xpath
создается массив $dataArr из $mainArr
где:
$dataArr['name'][1]=simlexmlobject
$dataArr['name'][2]=simlexmlobject
$dataArr['price'][1]=simlexmlobject
$dataArr['price'][2]=simlexmlobject
и т.д.
потом
unset($mainArr)

после этого создается структурированный массив
$structArr из $dataArr
где:
$structArr[1]['name']=string
$structArr[1]['price']=string
$structArr[2]['name']=string
$structArr[2]['price']=string
и т.д.
потом
unset($dataArr)

по идее, память которую занимали simlexmlobject в массивах $dataArr и $mainArr должна освободиться, но этого не происходит. в итоге память накапливается. как можно её освободить?
Ответы:
Объекты живут до тех пор, пока на них имеются ссылки. Значит, где-то ссылки остались. Причем ссылки могут находится в объектах нод, которые вы где-то сохраняете и с которыми выполняются действия.
Учтите, что при проходе массивов через foreach при попытке изменения исходного массива создается копия структуры массива, что также может являться причиной увеличения ресурсоемкости.
К сожалению, ваше описание задачи и вырванные из контекста куски кода не позволяют более подробно рассмотреть проблему и указать на более точное решение.


12 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.