PHP通过CURL获取远程文件header头信息
使用CURL方法获取远程文件header头信息,与内置函数get_headers不同的是,这个方法不用完整下载文件,只是下载头部信息,速度理论会快一些。
public function getRemoteFileHeaders($url)
{
$options = array(
CURLOPT_HEADER => true,
CURLOPT_NOBODY => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_AUTOREFERER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => array('Accept: */*', 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', 'Connection: Keep-Alive')
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$header = curl_exec($ch);
$ret = curl_errno($ch);
$error = curl_error($ch);
curl_close($ch);
if ($ret === 0) {
$head = array();
$headArray = explode("rn", trim($header));
$first = array_shift($headArray);
preg_match("#HTTP/[0-9.]+s+([0-9]+)#", $first, $code);
$head['code'] = intval($code[1]);
foreach ($headArray as $v) {
$arr = explode(':', $v, 2);
$head[trim($arr[0])] = trim($arr[1]);
}
return $head;
} else {
return $error;
}
}
评论