php中cURL的更好替代方案
我有一个大型数据库的远程mp3网址的各种网站,包括旧的和新的。 我使用以下代码检查URL在php中是否有效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
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
请求。请参见如何将其设置为头部