2013-05-07 232 views
0

我試圖檢查我的圖像是否存在於遠程服務器中。我有大量圖片(數百)。檢查圖像是否存在於遠程服務器問題

我試過curlfile_get_contents函數,它們都會凍結我的瀏覽器,因爲它需要很長時間來檢查。

我的結構是這樣的

<?php 
for loops{ 
$ch = curl_init($imageFile[$i]); 

     curl_setopt($ch, CURLOPT_NOBODY, true); 
     curl_exec($ch); 
     $retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
     if(retcode==200){ 
      $imagePath = $imageFile[i] 
     }else{ 
      $imagePth = 'badImage.gif'; 
     } 
     curl_close($ch); 

?> 

//show images in table 
<tr> 
    <td> <img src='".$imagePath."'/> </td> //show the image if the images exist. 
</tr> 


<?php 
} 
?> 

我的代碼將最終顯示的圖像,但它需要一個很長的時間。有沒有減少時間或其他方式來做到這一點?非常感謝!

+1

存在圖像中有你的PHP嘗試file_exists功能? – dee 2013-05-07 17:10:31

+0

您可以通過使用AJAX輪詢腳本以獲取圖像來進行漸進式加載。我假設現在的問題是,該頁面正在永久加載,因爲你的PHP腳本是從字面上下載每一個圖像文件。 – thatidiotguy 2013-05-07 17:10:41

+0

@webgal是的。加載時間相同。對於thatidiotguy你是什麼意思,通過使用Ajax拉腳本? – Rouge 2013-05-07 17:16:33

回答

0

有些服務器不會正確響應您的CURL_NOBODY選項正在使用的HEAD請求。他們讓連接打開太久。您可以嘗試設置超時,但大多數PHP安裝僅具有捲曲超時的第二個粒度。

鑑於這些令人厭惡的規則,我可能會放一些JavaScript來嘗試加載文件。如果文件不可用,請顯示badImage.gif,否則顯示該文件。

這不僅會使頁面加載時間變得更好,而且也會更加準確,因爲客戶端可能有某些站點阻止程序或防火牆,而您的服務器不具備這些功能。

1

簡單的Java腳本代碼,以檢查是否在遠程服務器

<!DOCTYPE html> 
<html> 
<head> 
<script src="jquery-1.7.2.min.js"></script> 
<script type="text/javascript"> 
function Isimage(url) { 
$("<img>", { 
    src: url, 
    error: function() { alert('image not found'); return false; }, 
    load: function() { alert('image found'); return true; } 
}); 
} 
</script> 
</head> 
<body> 
<input type="text" id="url" name="img_url" onblur="Isimage(this.value);"/> 
</body> 
</html> 
相關問題