检查是否在远程URL存在图像(Check whether image exists on remot

2019-06-21 08:37发布

我生成本书的ISBN图像的动态网址。 我需要一个可靠的方式用PHP来检查是否实际存在的远程URL的图像。 我试着用不同的PHP库,卷曲等各种方法,但它们都没有效果很好,有的则是彻头彻尾的慢。 鉴于这一事实,我需要生成(和检查!)为每本书在我的数据库大约60网址,这是一个巨大的等待时间。 任何线索?

Answer 1:

function checkRemoteFile($url)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    // don't download content
    curl_setopt($ch, CURLOPT_NOBODY, 1);
    curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($ch);
    curl_close($ch);
    if($result !== FALSE)
    {
        return true;
    }
    else
    {
        return false;
    }
}

- >这是最快的方法,如果你的主机支持卷曲



Answer 2:

使用和getimagesize()这样的方法

$external_link = ‘http://www.example.com/example.jpg’;
if (@getimagesize($external_link)) {
echo  “image exists “;
} else {
echo  “image does not exist “;
}


Answer 3:

有没有“简单”这里的方式-在一个最起码,你需要生成一个HEAD请求,并检查所生成的内容类型,以确保它是一个图像。 这是没有考虑到可能的引荐问题。 卷曲是去这里的路。



Answer 4:

你可以使用卷曲 。 刚刚成立的卷曲选项CURLOPT_NOBODY为true。 这将跳过身体信息和只能得到头(因此HTTP代码以及)。 然后,你可以使用CURLOPT_FAILONERROR把整个过程变成一个真/假类型检查



Answer 5:

您可以使用和getimagesize()

信用: http://junal.wordpress.com/2008/07/22/checking-if-an-image-url-exist/



Answer 6:

我一直在做我的房地产图片追踪...

$im = @imagecreatefromjpeg($pathtoimg);
if($im)
  imagedestroy($im); // dont save, just ack...
elseif(!$missing[$inum])
  $img404arr[] = $inum;

它似乎“比下载的实际图像,从图像即100K平均需要大约0.3秒每个更快。

我希望我可以只执行报头校验和读我是否可以得到一个200 VS 404,而无需下载任何东西。 任何人有这方便?



Answer 7:

这也可能是在这一点上的屏蔽点,但是这对我的作品:

function is_webfile($webfile)
{
 $fp = @fopen($webfile, "r");
 if ($fp !== false)
  fclose($fp);

 return($fp);
}


Answer 8:

如果图像都是一样的远程服务器上存在(或在同一网络中),你可以在该服务器上的Web服务,它会检查文件系统的图像文件,并返回一个布尔值,指示wheter图像存在与否。



文章来源: Check whether image exists on remote URL
标签: php url image curl