php中cURL的更好替代方案

php中cURL的更好替代方案,php,curl,Php,Curl,我有一个大型数据库的远程mp3网址的各种网站,包括旧的和新的。 我使用以下代码检查URL在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 = c

我有一个大型数据库的远程mp3网址的各种网站,包括旧的和新的。 我使用以下代码检查URL在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;
}

它消耗了大量的执行时间。任何人都可以建议任何其他alernative来执行此任务。

我们可以使用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
)

这有点模糊。你有没有检查过你的代码,看看它在哪里消耗了大量的执行时间?如果我没有弄错,那么cURL就不是问题所在。如果您确实只想检查URL是否有效,并且对文件的内容不感兴趣,那么您应该将代码更改为仅执行HEAD请求,而不是下载文件。这将为您提供有关文件存在和mime类型的信息。这就是你所需要的。谢谢你,arkascha,你能告诉我怎样才能只获取标题而不获取内容吗。我对cURLIn非常陌生@Ciccio所指的链接关键行是
curl_setopt($ch,CURLOPT_NOBODY,1)
将http方法从
GET
切换到
HEAD
——正如通常看到的那样,默认情况下
GET\u headers
将使用GET方法,您不会获得任何东西。如何使用流上下文,以及如何使用
HEAD
方法应该是您答案的一部分。默认情况下,这会发送
GET
请求。请参见如何将其设置为头部