Palych_tw
@Palych_tw
Типа веб-разработчик

Какая конфигурация сервера и настройки PHP нужны для нарезки и сохранения изображений?

Всем привет. Суть вопроса в заголовке. Использую библиотеку Intervention Image 2 версии в Laravel. Пытаюсь загрузить картинку и нарезать на 5 размеров. Одну большую, например на 3мб. Сначала получал ошибку о недостатке памяти или превышении размера POST. Поставил memory_limit 128М, post size увеличил, max_execution_time и max_input_time стоит 60. Теперь после отправки запроса на сервер в консоли браузера повисит pending секунд 8-10 и возвращает 500, но тело ответа пустое, никаких exception или других ошибок, в лог тоже не пишется ничего. Вот мой метод для сохранения картинки. Записывает в бд строку и возвращает id или null если что-то не так
public static function saveImageFromBase64($imageString, $savePath, $url)
    {
        $base64String = str_replace('data:image/png;base64,','',$imageString);
        $fullWidth = config('images.full_image_width');
        $sizesImg = config('images.image_sizes');
        $quality = config('images.image_quality');
        $filename = uniqid();
        $image = new ImageModel();

        try {
            $storedImage = Image::make($base64String);
            $storedImage->resize($fullWidth, 9999, function ($constraint) {
                $constraint->aspectRatio();
                $constraint->upsize();
            });
            $storedImage->backup();
            $storedImage->save($savePath . $filename . '.jpg', $quality);
            $image->url = $url . $storedImage->basename;
            $storedImage->reset();

            $sizes = [];
            foreach ($sizesImg as $name => $dimensions) {
                $storedImage->fit($dimensions['width'], $dimensions['height'], function ($c) { $c->upsize(); });
                $storedImage->save($savePath . $filename . '-' . $name . '.jpg', 100);
                $sizes[$name] = $url . $storedImage->basename;
                $storedImage->reset();
            }

            $image->sizes = json_encode($sizes);
            $image->save();

            return $image->id;

        } catch (\Exception $e) {
            return null;
        }
    }


Я понимаю, что это затратная операция, но тот же WordPress нарезает любое количество любых картинок даже на самом дохлом виртуальном хостинге. Что мешает делать это мне?)
  • Вопрос задан
  • 62 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы