我有一个像这样的PHP脚本:
include_once('simple_html_dom.php');
foreach ($csvarray as $product){
$url = $product[31];
$html = file_get_html($url);
...
}
一个网址存在重定向问题,因此重定向次数超过20次。 所以我收到了这个警告:
警告:file_get_contents(http:/ ...) [function.file-get-contents]:无法打开流:重定向限制 到达,在...中止......
不幸的是,我的csvarray的其他网址没有被处理,因为脚本在此URL之后因重定向问题而停止。
如何忽略此警告并继续使用下一个网址?
感谢您的帮助!
答案 0 :(得分:2)
不幸的是,我的csvarray的其他网址没有得到处理,因为脚本在此网址之后因重定向问题而停止。
由于file_get_contents() redirection limit reached
错误,您的脚本不会停止。 file_get_contents()
触发E_WARNING
这是非致命错误,不会停止脚本。
我的猜测是你的脚本因最大执行time limit或任何其他错误而停止。将ini_set('display_errors', true);
和error_reporting(-1);
放在通话文件的开头。
如何忽略此警告并继续使用下一个网址?
@
前缀的错误。$html = @file_get_contents('http://bit.ly/6wgJO');
file_get_contents()
(context options and parameters)增加/减少$context
的最大重定向:$context = stream_context_create(['http' => ['max_redirects' => 50]]);
$html = @file_get_contents('http://bit.ly/6wgJO', false, $context);
ignore_errors
:$context = stream_context_create(['http' => ['max_redirects' => 0, 'ignore_errors' => true]]);
$html = file_get_contents('http://bit.ly/6wgJO', false, $context);
CURLOPT_FOLLOWLOCATION
设置为true
或false
。 CURLOPT_MAXREDIRS
。CURLOPT_TIMEOUT
设置为允许cURL函数执行的最大秒数。 请参阅其他选项here。
答案 1 :(得分:-2)
使用@
前缀:
$html = @file_get_html($url);
应该解决问题。
您可以使用cURL
并将名为CURLOPT_FOLLOWLOCATION
的参数设置为TRUE
。
答案 2 :(得分:-3)
有几种方法可以做到这一点,一种方法是尝试捕捉异常
try {
$html = file_get_html($url);
}catch(Exception $e){
//Do what you want to do with the code
}
另一种方法是在file_get_html前面使用@来简单地抑制警告:
$html = @file_get_html($url);
如果您想了解更多,但有更好的方法可以处理此错误,但这些是最简单的。