2011-10-03 49 views
2

我想檢查是否存在遠程映像。 目前使用CURL和基於其響應我可以確定文件是否存在。 但是,這取決於圖像文件的大小也需要一定的時間量。PHP最便宜的方式如何檢查是否存在遠程映像

有沒有最安全和最便宜的方式做一個檢查,而不離線或使用緩存?

$ch = curl_init(); 
     // set URL and other appropriate options 
     /*--Note: if in sabre proxy, please activate the last 4 lines--*/ 
     $options = array( CURLOPT_URL => $img, 
          CURLOPT_HEADER => false, // get the header 
          CURLOPT_NOBODY => true, // body not required 
          CURLOPT_RETURNTRANSFER => false, // get response as a string from curl_exec, not echo it 
          CURLOPT_FRESH_CONNECT => false, // don't use a cached version of the url 
          CURLOPT_FAILONERROR => true, 
          CURLOPT_TIMEOUT => 5 
         ); 


     curl_setopt_array($ch, $options); 

     if(!curl_exec($ch)) { return FALSE; } 

     $httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 

     curl_close($ch); 

     return ($httpcode<400); 
+0

你可以發送HEADER而不是GET來只知道沒有下載該文件會有什麼反應,但是如何在curl中做到這一點我不知道。 – Dani

+0

@Dani:它是「HEAD」,而不是「HEADER」。 –

回答

6

Perform a HEAD request並檢查響應碼。

+0

測試,頭和NOBODY產生相同的結果和時間... – flyclassic

+0

然後,你無能爲力。服務器很慢。 –

+0

@flyclassic:使用'CURLOPT_NOBODY'發出'HEAD'請求,這就是爲什麼它們是相同的。 – salathe