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

2 つのオプションがあります。

1 getimagesize を 2 行で使用し、エラー メッセージを非表示にします。戻り値を確認する

$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 に答える