快速函数检查url是否存在PHP

时间:2016-02-14 09:54:45

标签: php http-headers

我使用了@file_get_contents和get_headers,即使URL低于1ko,两者都很慢,尝试使用cURL,但服务器不支持它。是否有使用快速功能?

2 个答案:

答案 0 :(得分:1)

使用@arkascha建议的方法你可以这样做:

$url='http://stackoverflow.com';
$options=array(
    'http'=>array(
        'method'        =>  'HEAD',
        'User-Agent'    =>  $_SERVER['HTTP_USER_AGENT']
    )
);
stream_context_get_default( $options );
$headers=get_headers( $url, 1 );
echo $headers[0];

看起来相当快,您可以进一步解析响应以查找状态是否为200或其他。

答案 1 :(得分:0)

Frank Koehl做了一个简洁的小功能来做这个并返回url的http状态。

http status code function

/**
 * @author  Frank Koehl
 * @src    http://frankkoehl.com/2009/09/http-status-code-curl-php/
 */
function get_status($url)
{
    // must set $url first. Duh...
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    // do your curl thing here
    $data = curl_exec($ch);
    $http_status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $http_status;
}