在Windows 7上使用php.exe 5.2.17.17,这个:
include_once('simple_html_dom.php');
function fix($setlink)
{
$setaddr = $setlink->href;
$filename="..\\".urldecode($setaddr);
$set=file_get_contents($filename);
$setstr = str_get_html($set);
// Do stuff requiring whole file
unset($set);
unset($setstr);
}
$setindexpath = "..\index.htm";
foreach(file_get_html($setindexpath)->find('a.setlink') as $setlink)
{
fix($setlink);
}
(依赖外部数据文件)因此失败:
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 32 bytes) in [snip]\simple_html_dom.php on line 620
"功能修复"这是对类似问题的答案的建议。 unset()是一厢情愿的想法: - )
如何避免在下一次循环迭代中未使用的字符串继续消耗内存?不会过多地破坏代码。并将整个文件作为字符串提供。
答案 0 :(得分:1)
在$setstr->clear();
之前尝试unset($setstr);
见http://simplehtmldom.sourceforge.net/manual_faq.htm#memory_leak
旁注:$ setstr似乎用词不当;它不是一个字符串,而是html文档的dom repesentation。