Загрузка различных изображений в Cloudinary, возвращает ошибку тайм-аута (30 секунд) - PullRequest
0 голосов
/ 18 мая 2019

Я разрабатываю инструмент, позволяющий пользователям загружать различные изображения, он изменяет их размер, если их ширина превышает 1191 пикселя или высота превышает 1684 пикселя.

Я использую cloudinary в качестве CDN для хранения изображений ииспользуйте их API для загрузки и изменения размера изображений с transform.

. Моя проблема заключается в том, что при загрузке в Cloudinary выдается ошибка тайм-аута (максимум 30 секунд) при загрузке 34 изображений (максимум, которое я позволяюзагрузка за один раз - 100),

Я тестировал, не используя cloudinary, а просто изменение размера изображений занимает 9,8 секунды.

Вот что я использую для изменения размера изображений:

function resizeImage($sourceImage, $targetImage, $maxWidth, $maxHeight) {
    // Obtain image from given source file.
    if (!$image = @imagecreatefromjpeg($sourceImage))
    {
        return false;
    }

    // Get dimensions of source image.
    list($origWidth, $origHeight) = getimagesize($sourceImage);

    if ($maxWidth == 0)
    {
        $maxWidth  = $origWidth;
    }

    if ($maxHeight == 0)
    {
        $maxHeight = $origHeight;
    }

    // Calculate ratio of desired maximum sizes and original sizes.
    $widthRatio = $maxWidth / $origWidth;
    $heightRatio = $maxHeight / $origHeight;

    // Ratio used for calculating new image dimensions.
    $ratio = min($widthRatio, $heightRatio);

    $newWidth  = (int)$origWidth  * $ratio;
    $newHeight = (int)$origHeight * $ratio;

    // if image size is less than allowed then don't resize
   if($origWidth < $maxWidth) {
        $newWidth  = (int)$origWidth;
    }
    if($origHeight < $maxHeight) {
        $newHeight = (int)$origHeight;
    }

    $size = array(
        'width' => $newWidth,
        'height' => $newHeight
    );

    return $size;
}

Вот что я использую для загрузки в cloudinary:

foreach($image_list as $key => $imgs) {

                // resize image
                $image_resize = resizeImage($images['tmp_name'][$key], $targetImage, 1191, 1684);

                // upload image
                $target_dir = "chapters/90/".$title."/".$chapter_num."/"; // directory
                $upload = $dbconn->upload($target_dir,basename($images['name'][$key]),$images['tmp_name'][$key],$image_resize['width'],$image_resize['height']);

                // insert into database to sort images
                $data_images = array(
                    'id_manga' => $id_manga,
                    'id_chapter' => $id_chapter,
                    'id_user' => $id_user,
                    'url' => $upload['secure_url'],
                    'page_num' => $i
                );


                $sql_img = "INSERT INTO pages_sort (id_manga,id_chapter,id_user,url,page_num) values(:id_manga,:id_chapter,:id_user,:url,:page_num)";
                $insert_img = $dbconn->execute($sql_img,$data_images);
            }

Функция загрузки:

function upload($target_dir,$fileName,$tmp_fileName,$width = '',$height = '') {
        require"upload_func/vendor/autoload.php";
        require"upload_func/config.php";

        $width = (int)$width;
        $height = (int)$height;

        // upload image
        if(empty($width) && empty($height)) { 
            $this->upload = \Cloudinary\Uploader::upload($tmp_fileName,array("public_id" => $target_dir."/".$fileName));
        } else {

            $this->upload = \Cloudinary\Uploader::upload($tmp_fileName,array(

                "public_id" => $target_dir."/".$fileName,
                "transformation"=> array(
                    array(
                        "width"=> $width, 
                        "height"=> $height
                    )
                )
            ));
        }

        return $this->upload;
    }

Я мог бы попытаться изменить максимальное время выполнения, но я хотел бы попытатьсяоптимизировать процесс.

Спасибо за помощь:).

...