0

我正在尝试检查我的图像是否存在于远程服务器中。我有大量图像(数百张)。

我已经尝试过curl运行file_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
}
?>

我的代码最终会显示图像,但这需要很长时间。有什么办法可以减少时间或其他方法吗?非常感谢!

4

2 回答 2

1

simple java script code to check if images exist in the remote server

    <!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>
于 2013-05-07T18:37:13.197 回答
0

某些服务器不会正确响应您的 CURL_NOBODY 选项正在使用的 HEAD 请求。他们让连接打开太久。您可以尝试设置超时,但大多数 PHP 安装对于 curl 超时只有第二个粒度。

鉴于这些令人讨厌的规则,我可能会放置一些尝试加载文件的 javascript。如果文件不可用,则显示 badImage.gif,否则显示文件。

这不仅会使页面加载时间更短,而且也会更准确,因为客户端可能具有您的服务器没有的某些站点拦截器或防火墙。

于 2013-05-07T17:32:06.343 回答