获取HEAD的cURL对于多个网址来说花费的时间太长

时间:2017-10-11 14:34:58

标签: php curl

我在这里设置了这个cURL

function curl($url) {
 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL, $url);
 curl_setopt($ch, CURLOPT_HEADER, 1); 
 curl_setopt($ch, CURLOPT_NOBODY, 1);
 curl_setopt($ch, CURLOPT_FAILONERROR, 1);
 curl_setopt($ch, CURLOPT_ENCODING, '');
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
 curl_exec($ch);
 $ct = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
 return $ct;
}

我用它来获取Content-Type并将此值返回给用户。只是为了让想要检查所有网址是否都是有效链接或有效图片链接的用户放心。

所以我的代码是

if(isset($_POST['urls'])) {
    foreach ($urls as $url) {
        echo "Content Type is ".curl($url)."<br>";
    }
}

我的问题是,如果用户输入100 URL ~ 500 URL,则需要10s ~ 15s才能完成此功能。

如何优化功能,由于我的互联网连接速度,它是否很慢?

是否会用于DDoS攻击,最好将其删除?

1 个答案:

答案 0 :(得分:1)

对于像这样的手术来说,15毫秒非常快!可以使用curl_multi函数对其进行优化,因为这些函数允许并行加载URL。 但是,我不确定为什么你会关心它是否是15ms。通常认为单个HTTP请求不止于此。