我需要檢查遠程文件是否在線並且它們沒有改變。問題是這些文件很大,所以我只想讀取http頭,然後中止請求。結果將基於響應狀態碼和內容長度字段。如何從PHP發送不完整的HTTP請求?
我該如何在PHP中做到這一點?
我需要檢查遠程文件是否在線並且它們沒有改變。問題是這些文件很大,所以我只想讀取http頭,然後中止請求。結果將基於響應狀態碼和內容長度字段。如何從PHP發送不完整的HTTP請求?
我該如何在PHP中做到這一點?
您可以使用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);
謝謝,那就是我一直在尋找的。 – NeDark
這兩種方法之間存在微妙的差異(但可能很重要)。 'get_headers()'發送一個正常的GET請求並在頭部被接收後立即銷燬連接。用'... NOBODY'發送一個HEAD請求。 cURL方法稍微快一點,但也可能返回不完整/不正確的圖片,具體取決於您請求的對象和您請求的服務器。這些都不會允許你執行GET請求以外的其他任何操作,並返回頭部(HEAD應該模擬GET)。 – DaveRandom
cURL示例不起作用,我發現'curl_setopt($ ch,CURLOPT_HEADER,TRUE); '失蹤了。 – NeDark
的可能重複[查看某網址在PHP中存在(http://stackoverflow.com/questions/2280394/check-if-an -url-exists-in-php) – Gordon
更多http://stackoverflow.com/search?q=check+if+link+exists+php – Gordon