验证URL是否处于活动状态并正在运行


verify URL is live and running or not

我将从用户那里获取URL。现在我需要验证地址是否为活动地址。

例如:

如果用户输入"google.com",那么我会将"google.com"作为参数传递给某个函数,如果URL是实时的、上传和运行的,函数会返回TRUE,否则返回FALSE。

任何内置功能或一些帮助。

我建议使用get_headers($url)并检查其中一个响应是否包含"200 OK"。如果是,则该站点是活动的,并以有效的请求进行响应。如果你愿意,你也可以检查其他状态代码,比如重定向之类的。

function url_exists($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
    curl_setopt($ch, CURLOPT_TIMEOUT,5);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,5);
    curl_exec($ch);
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);  
    return $code == 200;
}

您可能想要支持额外的http代码,例如201,但这取决于您自己。

编辑:

需要注意的是,这可以让您更好地控制失败前要使用的超时。

尝试fopen

$f = @fopen('http://www.google.com/', 'r');
if (is_resource($f)) {
  fclose($f);
  return true;
} else { return false; }