可能重複:
How can one check to see if a remote file exists using PHP?檢查,如果一個網站存在
我希望通過編程檢查,如果一個網站是活的或不是。我知道我可以通過使用「cURL」或「fopen」打開url來做到這一點,但它需要很長時間,因爲它需要獲取整個頁面。
此外,此方法不可靠,因爲可能有其他原因,如不支持的協議能夠打開網站。
有沒有其他辦法?
可能重複:
How can one check to see if a remote file exists using PHP?檢查,如果一個網站存在
我希望通過編程檢查,如果一個網站是活的或不是。我知道我可以通過使用「cURL」或「fopen」打開url來做到這一點,但它需要很長時間,因爲它需要獲取整個頁面。
此外,此方法不可靠,因爲可能有其他原因,如不支持的協議能夠打開網站。
有沒有其他辦法?
您可以簡單地使用HEAD請求來獲取頁面的標題而不是整個頁面。儘管如此,該網站仍然會生成整個頁面,但至少您不會下載所有內容。
爲了達到這個目的,你可以使用很多方法,只要檢查如何改變請求的頭部,而不是做一個GET,就可以做一個HEAD。
你可以發送一個頭部請求並檢查http響應代碼?
請問您能否詳細說明您的答案? – Sourabh 2012-07-17 19:12:00
我不知道還有什麼要說明的。從我的答案開始,使用谷歌進行跟蹤研究會很容易。 – 2012-07-17 19:12:26
@JonTaylor:什麼是標題請求?你如何發送一個?你如何檢查HTTP響應碼?只是因爲它對你來說很明顯,並不意味着它適用於所有其他人:) – 2012-07-17 19:14:50
fopen()
和fread()
不讀取整個網頁(不一定是反正)。您可以使用它並只讀取幾個字節來確定網站是否存在(200 OK)。
$file = 'http://www.test.com/idontexist.jpg';
$file_headers = @get_headers($file);
if($file_headers[0] == 'HTTP/1.1 404 Not Found') {
$exists = false;
}
else {
$exists = true;
}
爲什麼抑制錯誤? – 2012-07-17 19:13:48
,但它將花費相同的時間來打開網站,它是更可靠,然後打開或捲曲? – Sourabh 2012-07-17 19:26:30
只要你觸發HTTP協議,它將會執行整個頁面,如果服務器/網站不是隻返回頭部的話。你想要的是某種看門狗,但通常情況下,人們將實現一個小網頁,只監聽一個請求並返回一些信息來表明他們還活着。 – 2012-07-17 19:27:51
如果你不能依賴這樣的機制,並且必須獲得主頁,那麼沒有什麼可以做更多的事情,獲得主頁,等待所有的數據被處理,但是使用HEAD你只能傳輸一部分迴應並沒有得到一切。 – 2012-07-17 19:28:29