2011-10-06 45 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并根据需要删除它。

相关问题