这会导致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 :(得分:2)
如果你真的想知道,运行它几千次并输出内存使用量。通常情况下,垃圾收集器会清理未使用的对象,因此第一个代码段不会“泄漏”内存。但是,在PHP< 5.3中,循环引用存在一个问题,它可以防止收集未使用的对象。因此,如果您遇到问题,更新PHP可能会为您解决问题。
答案 1 :(得分:1)
我不是超级PHP大师,但我可能会选择你在那里的第二个例子,只是为了安全。
答案 2 :(得分:1)
它不会导致内存泄漏。 PHP的垃圾收集器将看到没有任何引用留给SimpleXMLElement并根据需要删除它。