DOMDocument / Xpath утечка памяти во время длинного процесса командной строки - любой способ деконструировать этот класс

Я создал приложение для очистки php командной строки, которое использует XPath для анализа HTML - проблема в том, что каждый раз, когда новый экземпляр класса DOMXPath загружается в цикле, я получаю потерю памяти, примерно равную размеру загружаемого XML , Скрипт запускается и работает, медленно наращивая использование памяти, пока не достигнет предела и не выйдет.

Я пытался форсировать сборку мусора сgc_collect_cycles() и PHP все еще не возвращает память из старых запросов Xpath. Действительно, определение класса DOMXPath, похоже, даже не включает функцию-деструктор?

Так что мой вопрос ... есть ли способ заставить мусор убирать наDOMXPath после того как я уже извлек необходимые данные? Использование unset на экземпляре класса предсказуемо ничего не делает.

В коде нет ничего особенного, просто стандартные вещи Xpath:

//Loaded outside of loop
$this->dom = new DOMDocument(); 

//Inside Loop
$this->dom->loadHTML($output);  
$xpath = new DOMXPath($this->dom);
$nodes = $xpath->query("//span[@class='ckass']");

//unset($this->dom) and unset($xpath) doesn't seem to have any effect

Как вы можете видеть выше, я сохранил экземпляр новогоDOMDocument Класс за пределами цикла, хотя это, похоже, не улучшает производительность. Я даже пытался взять$xpath экземпляр класса из цикла и загрузка DOM в Xpath напрямую с помощью__constructor метод, потеря памяти такая же.

Ответы на вопрос(2)

Ваш ответ на вопрос