以下函数接收表示 url 的字符串参数,然后将 url 加载到 simple_html_dom 对象中。如果加载失败,它会尝试再次加载 url。
public function getSimpleHtmlDomLoaded($url)
{
$ret = false;
$count = 1;
$max_attemps = 10;
while ($ret === false) {
$html = new simple_html_dom();
$ret = $html->load_file($url);
if ($ret === false) {
echo "Error loading url: $url\n";
sleep(5);
$count++;
$html->clear();
unset($html);
if ($count > $max_attemps)
return false;
}
}
return $html;
}
但是,如果一次 url 加载失败,它会一直为当前 url 失败,并且在max attemps
结束后,它还会在下一次调用该函数时继续失败,并且它必须处理其余的 url。
如果 url 暂时处于脱机状态,则继续失败是有意义的,但它们不是(我在脚本运行时检查过)。
任何想法为什么这不能正常工作?
我还想指出,当开始无法加载 url 时,它只会发出警告(而不是多个警告),并带有以下消息:
PHP 警告:file_get_contents(http://www.foo.com/resource):打开流失败:HTTP 请求失败!在第 1081 行的 simple_html_dom.php 中
这行代码提示:
$ret = $html->load_file($url);