我有一个下面的函数,我在循环中经常调用.
随着内存从1MB上升到156MB,我等了5分钟. PHP的garabage收集器不应该出现并在某些时候减少它吗?!
是因为我将内存限制设置为256MB?
在回波点2,3,4,它的内存使用量相当不变.它在第4点下降了半个兆位.但第1点是主内存增加发生的地方.可能是因为file_get_html在内存中加载了html文件.
我虽然变量$html的清晰和未设置会解决这个问题吗?
function get_stuff($link, $category ){
$html = file_get_html(trim("$link"));
$article = $html->find('div[class=searchresultsWidget]', 0);
echo '1 - > '.convert(memory_get_usage(true)).'
';
foreach($article->find('h4 a') as $link){
$next_url = 'http://new.mysite.com'.$link->href;
$font_name = trim($link->plaintext);
$html = file_get_html(trim("$next_url"));
$article = $html->find('form[class=addtags]', 0);
$font_tags = '';
foreach($article->find('ul[class=everyone_tags] li a span') as $link){
$font_tags .= trim($link->innertext).',';
}
echo '2 - > '.convert(memory_get_usage(true)).'
';
$font_name = mysql_real_escape_string($font_name);
$category = mysql_real_escape_string($category);
$font_tags = mysql_real_escape_string($font_tags);
$sql = "INSERT INTO tag_data (font_name, category, tags) VALUES ('$font_name', '$category', '$font_tags')";
unset($font_tags);
unset($font_name);
unset($category);
$html->clear();
mysql_query($sql);
unset($sql);
echo '3 - > '.convert(memory_get_usage(true)).'
';
}
unset($next_url);
unset($link);
$html->clear();
unset($html);
unset($article);
echo '4 - > '.convert(memory_get_usage(true)).'
';
}
正如你所看到的,我试图无力地利用未设置的东西.虽然我的理解并不好,但一旦我称它就不会“取消”记忆.
感谢大家帮助我如何减少记忆力的上升.