避免浪费内存消耗

时间:2015-09-19 15:42:41

标签: php

在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()是一厢情愿的想法: - )

如何避免在下一次循环迭代中未使用的字符串继续消耗内存?不会过多地破坏代码。并将整个文件作为字符串提供。

1 个答案:

答案 0 :(得分:1)

$setstr->clear();之前尝试unset($setstr);http://simplehtmldom.sourceforge.net/manual_faq.htm#memory_leak

旁注:$ setstr似乎用词不当;它不是一个字符串,而是html文档的dom repesentation。