远程PHP getimagesize()/检查是否存在

时间:2013-01-12 01:22:31

标签: php timeout getimagesize

我正在使用getimagesize()来收集远程加载的图像信息。

问题是如果远程服务器在请求上花费的时间太长或者图像不存在,我会收到错误超时。我该怎么做才能防止这种情况发生,如果需要15秒自动加载请求然后返回一些返回null $ width,$ height和$ type的代码?

if($siteImage != "None"){
list($width, $height, $type) = getimagesize($siteImage);
if(!filter_var($siteImage, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)){
    die("fillDiv('checkImage','<font color=\"red\">Image is not valid URL type.</font>');");
}elseif($width != "468" || $height != "60"){
    die("fillDiv('checkImage','<font color=\"red\">Incorrect size.</font>');");
}elseif($type != "1" && $type != "2" && $type != "3"){
    die("fillDiv('checkImage','<font color=\"red\">Incorrect image type. (.jpg .gif .png) only</font>');");
}else{
    print("fillDiv('checkImage','');");
}
}

1 个答案:

答案 0 :(得分:3)

您有两种选择。

1使用getimagesize但两行,并隐藏错误消息。检查返回值

$aSize = @getimagesize($url);
if ($aSize) {
    // You have a return values
    list($width, $height, $type) = $aSize;
} else {
    // No return values
    $width = 0;  // etc
}

2用户cUrl在本地复制文件。您可以使用curl更好地控制时间,也可以检查文件是否存在或下载时间过长等。一旦在本地复制,请在本地文件上使用getimagesize()。只有当文件不是真正的图像时才会失败。快速在线示例:http://www.weberdev.com/get_example.php3?ExampleID=4009