我在WordPress核心中找到了一个非常好的类WP_Http来获取外部网页内容。
问题是,当找不到网址时,它会抛出PHP错误,Fatal error: Cannot use object of type WP_Error as array.
$url = 'http://asklsahgioa.fdjeoiao.griawpo'; // non-existent url
$oHttp = new WP_Http;
$output = $oHttp->request($url);
print_r($output['body']);
所以我想确定url是否存在于class方法之前。以下代码有效,但速度很慢,我发现在找到url时,响应需要一秒左右。这意味着如果网址很好,它会降低速度。
$handle = @fopen($url,'r');
if($handle !== false)
echo 'true';
else
echo 'false';
我也试过了get_headers()
;但是,当找到网址时,它也需要一秒钟。
$siteHeader = @get_headers($url , 1);
if ($siteHeader > 1)
echo 'true';
else
echo 'false';
那么,有没有更好的方法呢?也许WordPress已经有了它的功能或者扩展了类来嵌入错误处理?
答案 0 :(得分:2)
如何查看$output
是WP_Error
returned by a failed request呢?
$output = $oHttp->request($url);
if ($output instanceof WP_Error) {
// handle error
echo 'something terrible has happened';
} else {
print_r($output['body']);
}
(请注意,instanceof
运算符不适用于旧版本的PHP)
答案 1 :(得分:1)
此片段实际上不是检查请求是否失败的正确方法。
我指的是answer I have posted on Stack Overflow,它会向您展示这类任务的最佳做法。