2010-12-22 147 views
1

在PHP中,有時我想向遠程站點發送HTTP請求以查看響應頭,因此我手動聲明瞭所有內容,並使用fsock_open()函數。但是,這比使用遠程URL(加載整個頁面內容)調用file_get_contents()要慢得多。爲什麼是這樣?是否有一種很好的替代方法來獲取響應頭(例如,檢查頁面是否返回404錯誤),其運行速度可達file_get_contents()爲什麼file_get_contents()比使用fsock_open()更快?

+0

應該無動於衷。你可能做了一些不同的事情,但是我們不能說沒有代碼。如果您只對標題感興趣,您還應該發送HEAD請求。 – Artefacto 2010-12-22 03:31:55

回答

0

你剛剛嘗試過使用捲曲嗎?如果需要,您可以返回標題以及內容。

$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL, $url); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 
curl_setopt($ch, CURLOPT_MAXREDIRS, 10); 

$useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.5) Gecko/ 
2008120122 Firefox/3.0.5"; 
curl_setopt($ch, CURLOPT_USERAGENT, $useragent); 

$output = curl_exec($ch); 
$info = curl_getinfo($ch); 

這將追逐重定向,這並不總是需要的。

看看http://php.net/manual/en/function.curl-getinfo.php看看你在$info回來。

您可以嘗試執行HEAD請求而不是GET(CURLOPT_NOBODY選項),但是由於某些原因,我遇到了一些拒絕HEAD的服務器的問題。