我使用了@file_get_contents和get_headers,即使URL低于1ko,两者都很慢,尝试使用cURL,但服务器不支持它。是否有使用快速功能?
答案 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状态。
/**
* @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;
}