2011-10-06 3 views
1

이로 인해 PHP 메모리 누수가 발생합니까?이로 인해 PHP 메모리 누수가 발생합니까?

function xml_parse($xmlString) 
{ 
    return json_decode(json_encode(new SimpleXMLElement($xmlString)), true); 
} 

아니면 SimpleXML obj를 이렇게 설정 해제해야합니까? 스크립트가 많은 파일을 구문 분석 할 필요로

function xml_parse($xmlString) 
{ 
    $sObj = new SimpleXMLElement($xmlString); 
    $ret = json_decode(json_encode($sObj), true); 
    unset($sObj); 
    return $ret; 
} 

나는 큰 foreach 문이를 실행하고 있습니다.

+0

처럼 보입니다. https://bugs.php.net/bug.php?id=62468 – Zyava

답변

2

정말 알고 싶다면 몇 천 번 실행하고 메모리 사용량을 출력하십시오. 일반적으로 사용되지 않는 객체는 가비지 컬렉터에 의해 정리되므로 첫 번째 스 니펫은 메모리가 누출되지 않습니다. 그러나 PHP < 5.3에는 순환 참조에 문제가있어 사용되지 않는 객체가 수집되는 것을 방지 할 수 있습니다. 따라서 문제가 발생하면 PHP를 업데이트하면 문제가 해결 될 수 있습니다.

+0

저는 2 회의 테스트를 실행했고 첫 번째 방법은 400Mb 정도 였고 두 번째 방법은 270Mb 정도였습니다. PHP5.3.6 (MAMP)에서 – daniels

+0

흠 ... 재미 있습니다! – Rijk

1

저는 PHP 전문가가 아닙니다.하지만 두 번째 예를 들어 보니 안전 할 것입니다.

1

메모리 누수가 발생하지 않습니다. PHP의 가비지 수집기는 SimpleXMLElement에 남아있는 참조가 없으며 필요에 따라이를 제거합니다.

관련 문제