Php 处理外部库中的错误(简单html dom)
我正在构建一个网页来抓取一些网页 它通常可以工作,但每个人偶尔都会无法抓取页面,并抛出以下错误:Php 处理外部库中的错误(简单html dom),php,simple-html-dom,Php,Simple Html Dom,我正在构建一个网页来抓取一些网页 它通常可以工作,但每个人偶尔都会无法抓取页面,并抛出以下错误: ( ! ) Warning: file_get_contents(URLWASHERE): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in Z:\Wamp\www\spider\simple_html_dom.php on line 555 以下是我抓取页面的方式: $page->load_file(
( ! ) Warning: file_get_contents(URLWASHERE): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in Z:\Wamp\www\spider\simple_html_dom.php on line 555
以下是我抓取页面的方式:
$page->load_file('URLWASHERE');
有没有办法确定是否发生了这种错误?我不知道如何检测它,因为它在库中,而不是我的代码中 我不能使用if(!$page),因为它仍然返回一些内容。但这似乎不是很有帮助,尽管它明显更短
您可以在此处看到输出: $page成功时: $page失败时:
我只是想知道是否有错误,这样我就可以让我的程序再试一次。看来我可以使用
if(error_get_last())
检查到目前为止是否抛出了错误
如果遇到其他错误,这将中断,但我的代码似乎没有错误,除了偶尔出现的错误,所以我将使用这个
不幸的是,这只允许我尝试两次,而不是一直尝试直到成功。您可以使用该函数获取有关上次错误的信息。您也可以考虑用.</P>来屏蔽警告消息。
此外,在运行此代码之前,您还应重置error\u get\u last()
,的状态:
这个概念只是创建一个已知的错误。要想重置
错误\u get\u last()
请看我的答案哦,太棒了,我正试图找到一种方法来做这件事,但运气不好!
@file_get_contents('http://example.com/wjqlshqwd');
$error = error_get_last();
if($error && strpos($error['message'], '404') !== false)
{
echo 'There was an error';
}
// var_dump or anything else, as this will never be called because of the 0
set_error_handler('var_dump', 0);
@$undef_var;
restore_error_handler();
// error_get_last() is now in a well known state:
// Undefined variable: undef_var