У меня есть большая база данных удаленных mp3-адресов различных сайтов, как старых, так и новых. Я использую следующий код, чтобы проверить, являются ли URL-адреса действительными mp3 или нет в php
function check_url($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
$data = curl_exec($ch);
$headers = curl_getinfo($ch);
curl_close($ch);
if($headers['content_type']=='audio/mpeg'&&$headers['http_code']=='200')
return 1;
else
return 0;
}
Он потребляет огромное время выполнения. Может ли кто-нибудь предложить любой другой альтернативный вариант для выполнения этой задачи.
мы можем использовать встроенную функцию php
$headers=get_headers($url);
print_r($headers);
возвращает следующее
Array
(
[0] => HTTP/1.1 200 OK
[1] => Date: Tue, 07 Jul 2015 16:53:22
[2] => Server: nginx/1.4.1
[3] => Last-Modified: Tue, 19 Oct 2010 22:06:24 GMT
[4] => ETag: "4cbe1660-7807f6"
[5] => Accept-Ranges: bytes
[6] => Content-Length: 3493158
[7] => Connection: close
[8] => Content-Type: audio/mpeg
)
get _headers
будет использовать метод GET, и вы ничего не получите. Как использовать потоковый контекст, как описано в документации, чтобы использовать метод HEAD
должно быть частью вашего ответа.
GET
. Смотрите php.net/manual/en/function.stream-context-set-default.php о том, как установить его заголовок