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