Я использую simpleXML для анализа файла (около 341 мб). При загрузке файла он потребляет значительное количество оперативной памяти, что вполне нормально. Моя основная проблема заключается в том, что память не освобождается до выхода cron.SimpleXML Свободная память, потребляемая из файла загрузки
Я предположил, что если я отменил ссылочный объект xml, память, зарезервированная для файла в памяти, также будет выпущена, но это не так.
Можно ли освободить память для файла, на который имеется ссылка?
Пример кода (не знает, если GC может помочь):
gc_enable();
$this->xml = simplexml_load_file($filePath);
$val = $this->getValues('/SOME/PATH/HERE');
foreach($val as $a) {
$this->tags[] = (string) $a->$tagName;
}
$this->xml = null;
unset($this->xml);
gc_collect_cycles();
Есть ли еще одна ссылка на какой-либо узел документа XML, который вы никогда не отключили (что вынуждает SimpleXML оставить все в памяти)? Если нет, это может быть случай сложностей менеджера памяти PHP. Здесь хорошо говорят: https://www.youtube.com/watch?v=sm1HUrnsxLI – IMSoP
Никакой другой ссылки, это весь код. Это часть конструктора, но переменная XML находится только в области конструктора. – Drakoumel