ファイルを解析するためにsimpleXMLを使用しています(約341MB)。 ファイルをロードすると、大量のRAMが消費されますが問題ありません。私の主な問題は、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