Всем привет. Суть вопроса в заголовке. Использую библиотеку 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 нарезает любое количество любых картинок даже на самом дохлом виртуальном хостинге. Что мешает делать это мне?)