2011-12-19 45 views
0

我收到了一些鏈接,其中一些鏈接是rapidshare,一些鏈接是其他上傳主機。 如何檢查鏈接上的文件是否仍在工作?使用php檢查主機的鏈接

我試着用curl和file_get_contents。 在一些主機上curl正在工作,而其他file_get_contents正在工作,但大多數不會返回頁面源代碼,所以我無法搜索字符串「已刪除」或類似的東西。

有沒有辦法做到這一點?

編輯:這裏是新的代碼,仍然無法工作:

function curl_download($Url){ 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, $Url); 
$agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch,CURLOPT_VERBOSE,false); 
    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE); 
    curl_setopt($ch,CURLOPT_SSLVERSION,3); 
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_TIMEOUT, 0); 
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); 
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); 
$output = curl_exec($ch); 
curl_close($ch); 
return $output; 
+0

什麼是你的代碼?他們返回什麼? –

回答

2
 
function Visit($url){ 
     $agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; 
     $ch=curl_init(); 
     curl_setopt ($ch, CURLOPT_URL,$url); 
     curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt ($ch,CURLOPT_VERBOSE,false); 
     curl_setopt($ch, CURLOPT_TIMEOUT, 5); 
     curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, FALSE); 
     curl_setopt($ch,CURLOPT_SSLVERSION,3); 
     curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, FALSE); 
     $page=curl_exec($ch); 
     //echo curl_error($ch); 
     $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     curl_close($ch); 
     if($httpcode>=200 && $httpcode<300) return true; 
     else return false; 
} 
if (Visit("http://www.google.com")) 
     echo "Website OK"."n"; 
else 
     echo "Website DOWN"; 

+0

它會完成這項工作,但它看起來有點過頭了。 [CURL](http://php.net/manual/en/book.curl.php)絕對是答案 – adlawson

+0

感謝您的評論。 但是,它仍然無法工作。 它沒有得到一些主機的源代碼,或者它只是獲得一些源代碼。 我必須得到整個來源才能搜索單詞「已刪除」等。 – user1104615

+0

@user訣竅是查看HTTP響應代碼。如果文件不存在,主機*應該用404代碼或類似的代碼進行響應。無需查看實際的頁面內容。這些網站實際上是否這樣做是一個不同的問題。 – deceze