Вы также можете попробовать curl, кратчайший пример, который извлекает все заголовки, выглядит так:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://stackoverflow.com');
curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_exec($ch);
function read_header($ch, $string) {
print "Received header: $string";
return strlen($string);
}
Выход:
[~]> php headers.php
Received header: HTTP/1.1 200 OK
Received header: Cache-Control: private
Received header: Content-Type: text/html; charset=utf-8
Received header: Expires: Mon, 31 Aug 2009 09:38:45 GMT
Received header: Server: Microsoft-IIS/7.0
Received header: Date: Mon, 31 Aug 2009 09:38:45 GMT
Received header: Content-Length: 118666
Received header:
Конечно, вам нужны только заголовки, тогда fsockopen работает так же хорошо. За исключением того, что вместо GET вы должны использовать HEAD, потому что вам нужны заголовки, а не содержимое.
Кроме того, curl работает (при условии, что вы скомпилировали его с поддержкой ssl) и для https url-s.