0

我在 WordPress 核心中发现了一个非常好的类 WP_Http,用于抓取外部网页内容。

问题是找不到 url 时会抛出 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 在类方法之前是否存在。以下代码有效,但速度很慢,当找到 url 时,我可以看到响应需要一秒钟左右。这意味着如果 url 很好,它会降低速度。

$handle = @fopen($url,'r');
if($handle !== false)
   echo 'true';
else
   echo 'false';

我也试过get_headers()了;但是,找到 url 也需要一秒钟。

$siteHeader = @get_headers($url , 1);
if ($siteHeader > 1) 
    echo 'true';
else 
    echo 'false';

那么,有没有更好的方法来做到这一点?也许 WordPress 已经有一个函数或者扩展类来嵌入错误处理?

4

2 回答 2

3

如何检查是否$outputWP_Error 由失败的请求返回的

$output = $oHttp->request($url);

if ($output instanceof WP_Error) {
  // handle error
  echo 'something terrible has happened';
} else {
  print_r($output['body']);
}

(请注意,该instanceof运算符不适用于旧版本的 PHP)

于 2012-09-13T00:17:07.143 回答
1

这个片段实际上不是检查请求是否失败的正确方法。

我指的是我在 Stack Overflow 上发布的答案,它将向您展示此类任务的最佳实践。

于 2012-09-18T21:11:42.690 回答