我一直在使用Xpath对象,最近发现它是我内存峰值的根本原因。我定义了我的xpath对象
$dom = new DOMDocument();
@$dom ->loadHTML($cl);
$xpath = new DOMXpath($dom);
以下是导致内存不断增加的一些代码:
$websiteQuery = $xpath->query("//a[@compid='Profile_Website']/@href");
foreach($websiteQuery as $web){
$website = $websiteQuery ->item(0)->nodeValue;
}
这会导致永不停止的内存增加,直到脚本完成(有时超过6小时)。在这种情况下,$ websiteQuery->长度只有1,所以它只通过循环一次,但somehoe在循环中调用$ websiteQuery-> item(0)会导致内存峰值。这是一个解决方案:
$websiteQuery = $xpath->query("//a[@compid='Profile_Website']/@href");
foreach($websiteQuery as $web){
$website = $web->nodeValue;
}
有谁知道为什么会这样?