getimagesize - не удалось открыть поток: истекло время соединения - PullRequest
3 голосов
/ 10 ноября 2011

В моем php-скрипте я пытаюсь получить изображение с URL-адреса, изменить его размер и загрузить на мой сервер. Сценарий можно увидеть по адресу http://getsharp.net/imageupload.php?admin=rene - Сценарий показан ниже (в нем, конечно, есть и другие PHP и HTML, но эта часть вызывает у меня проблему):

$admin = $_REQUEST['admin'];
$url = $_POST['uploadlink'];

    if ($_POST['filename']){
        $filename = $_POST['filename'].".jpg";
    } else {
        $urlinfo = parse_url($url);
        $filename = basename($urlinfo['path']);

        $filenamearray = explode(".", $filename);
        $filenamebase = $filenamearray[0];
        $filenamebase = substr($filenamebase, 0, 20); // max 20 characters
        $filename = $filenamebase.".jpg";

    }

    // Get new dimensions
    list($width, $height) = getimagesize($url);
    $new_width = 300;
    $ratio = $height/$width;
    $new_height = 300*$ratio;

    // Resample
    $image_p = imagecreatetruecolor($new_width, $new_height);

    if(exif_imagetype($url) == IMAGETYPE_GIF){
        $image = imagecreatefromgif($url);
    }else if(exif_imagetype($url) == IMAGETYPE_JPEG){
        $image = imagecreatefromjpeg($url);
    }else if(exif_imagetype($url) == IMAGETYPE_PNG){
        $image = imagecreatefrompng($url);
    }else{
        $image = false;
    }

    imagecopyresampled($image_p, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

    if(is_dir("images/upload/".$admin."/")){
        // Output
        imagejpeg($image_p, "images/upload/".$admin."/".$filename);

        imagedestroy($image_p);
    }else{
        mkdir("images/upload/".$admin."/");
        // Output
        imagejpeg($image_p, "images/upload/".$admin."/".$filename);

        imagedestroy($image_p);
    }
    $URL="http://getsharp.net/imageupload.php?admin=".$admin; 

    header ("Location: $URL");

Все работает нормально, за исключением того, что когда я добавляю новый URL, он выдает мне следующую ошибку: Предупреждение: getimagesize (http://buffalocomputerconsulting.com/images/computer.jpg): не удалось открыть поток: истекло время ожидания соединения.

Однако, если я сразу добавлю точно такой же URL-адрес, проблем не возникнет, и изображение будет загружено. Таким образом, каждый раз, когда я пробую новый URL в первый раз, это выдает мне вышеуказанную ошибку. Как это может быть?

Спасибо.

1 Ответ

1 голос
/ 10 ноября 2011
  1. Ваш DNS разрешается слишком медленно
  2. Ваш сервер сначала пытается использовать не отвечающий DNS
  3. Ваш сервер пытается сначала подключиться по IPv6
  4. Ваш восходящий канал медленный как патокано у него есть кеширующий прокси

Я уверен, что есть и другие.Попробуйте свой скрипт на другом компьютере и посмотрите, не изменится ли он.

...