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