2017-10-11 61 views
0

我這裏有這個捲曲設置捲曲越來越HEAD時間太長多個URL

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攻擊,最好刪除它?

+0

並行化:http://php.net/manual/en/function.curl-multi-init.php – ceejayoz

+0

(是的,這可以令人信服地用於DDoS的考慮速率限制你的用戶,如果你正在做。這提供給一般不可信任的公衆)。 – ceejayoz

+0

@ceejayoz如果用戶可以多次放置'500 URL',並重復和重複,那很不好? (限制:500) – AXAI

回答

1

對於像這樣的操作,15ms的速度非常快!可以使用curl_multi函數對其進行優化,因爲這些函數允許並行加載URL。 但是,我不是很確定你爲什麼會在意它是15ms。通常認爲單個HTTP請求不止於此。

+1

我猜他們的意思是10-15秒。以這種方式在15ms內依次執行500個URL是IMO不可能的。 – ceejayoz

+0

@ceejayoz是的,'s'不是'ms'對那個錯誤感到抱歉。 – AXAI