2011-09-04 52 views
0

我需要檢查遠程文件是否在線並且它們沒有改變。問題是這些文件很大,所以我只想讀取http頭,然後中止請求。結果將基於響應狀態碼和內容長度字段。如何從PHP發送不完整的HTTP請求?

我該如何在PHP中做到這一點?

+0

的可能重複[查看某網址在PHP中存在(http://stackoverflow.com/questions/2280394/check-if-an -url-exists-in-php) – Gordon

+0

更多http://stackoverflow.com/search?q=check+if+link+exists+php – Gordon

回答

5

您可以使用get_headers()函數。

如果你喜歡cURL,您可以使用CURLOPT_NOBODY

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_NOBODY, TRUE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

$headers = curl_exec($ch); 
+0

謝謝,那就是我一直在尋找的。 – NeDark

+3

這兩種方法之間存在微妙的差異(但可能很重要)。 'get_headers()'發送一個正常的GET請求並在頭部被接收後立即銷燬連接。用'... NOBODY'發送一個HEAD請求。 cURL方法稍微快一點,但也可能返回不完整/不正確的圖片,具體取決於您請求的對象和您請求的服務器。這些都不會允許你執行GET請求以外的其他任何操作,並返回頭部(HEAD應該模擬GET)。 – DaveRandom

+0

cURL示例不起作用,我發現'curl_setopt($ ch,CURLOPT_HEADER,TRUE); '失蹤了。 – NeDark