php simple_html_dom 一個iconv錯誤引起解析中斷的問題,貌似內存溢出
環境:
$pageNum = 8;
for ($i = 1; $i < $pageNum; $i++) {
$html = new simple_html_dom();
$host = 'http://xxxxxx';
$url = sprintf ($this->urlFormat, $i);
$html->load_file($url);
echo "<br>" . $i . "start1 ".$url."<br>";
$mainHtml = $html->find('div[class=main]', 0);
...
...
$html->clear();
unset($html);
}
循環出現錯誤
Notice: iconv(): Detected an illegal character in input string in D:\Workspace\PHP\admin_data\simple_html_dom.php on line 790
然后下一個循環就會中斷停止,不再正常運行,$html->load_file($url);將失敗,之后如下提示
Fatal error: Call to a member function find() on a non-object in D:\Workspace\PHP\admin_data\simple_html_dom.php on line 1113
完了后面解析我無法再完成了。
谷粉+百度,關于iconv修改的嘗試都是老樣子。
之后已經想到可能是$html沒有釋放的問題,又搜了一會,使用將$html = new simple_html_dom();替換為如下代碼,解決
$html = new simple_html_dom(); //干掉不需要
$host = 'http://xxxxxx';
$url = sprintf ($this->urlFormat, $i);
$html = file_get_html($url);
其他照舊,終于iconv()即使失敗,也能繼續解析了。也就是可下這個結論如果在解析中途出錯,$html = new simple_html_dom(); 這中方式可能無法釋放。

浙公網安備 33010602011771號