0

我正在使用 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','');");
}
}
4

1 回答 1

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

于 2013-01-12T01:32:27.967 回答