лучшая альтернатива cURL в php

1

У меня есть большая база данных удаленных 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;
}

Он потребляет огромное время выполнения. Может ли кто-нибудь предложить любой другой альтернативный вариант для выполнения этой задачи.

  • 0
    Это немного расплывчато. Вы проверили свой код, чтобы увидеть, где он занимает огромное время выполнения?
  • 10
    Если я вас правильно понял, тогда проблема не в CURL. Если вы действительно хотите проверить, действительны ли URL-адреса, и не интересуетесь содержимым файлов, вам следует изменить код, чтобы выполнять только HEAD-запросы, а не загружать файлы. Это дает вам информацию о существовании файла и тип MIME. Что все, что вам нужно.
Показать ещё 5 комментариев
Теги:
curl

1 ответ

2
Лучший ответ

мы можем использовать встроенную функцию 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
)
  • 0
    Дело в том, что по умолчанию get _headers будет использовать метод GET, и вы ничего не получите. Как использовать потоковый контекст, как описано в документации, чтобы использовать метод HEAD должно быть частью вашего ответа.
  • 0
    По умолчанию это отправляет запрос GET . Смотрите php.net/manual/en/function.stream-context-set-default.php о том, как установить его заголовок

Ещё вопросы

Сообщество Overcoder
Наверх
Меню