2011-10-06 54 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並根據需要刪除它。

相關問題