devAston
@devAston
Web developer

Как исправить проблему «cache resources exhausted» библиотеки imagick в PHP 7.3?

Добрый день, коллеги!

Исходные данные

Имеется Docker с web-приложением внутри на PHP7.3-apache;
Изображение "ORIGINAL" с разрешением 7500x10500px в формате tiff и размером 149 Мб.
Тестовое изображение "MIDDLE" с разрешением 7600x7600px в формате tiff (LZW сжатие) и размером 8.9 Мб.
Тестовое изображение "LARGE" с разрешением 11000x11000px в формате tiff (LZW сжатие) и размером 14.9 Мб.

Имеется скрипт на обработки изображения

$img = new Imagick();
$img->readImage(Storage::path($filePath.$fileName));
$img->setImageFormat('png');
...
$img->writeImage(public_path($fileName));
$img->destroy();


При выполнении скрипта с изображением "MIDDLE" проблем не возникает, но когда используешь ["ORIGINAL" и "LARGE"] прилетает "cache resources exhausted `/var/www/html/storage/app/upload/image-tiff/2019-09-39/LARGE_f2ed11af1f6bbbccdeb621eb4a843b02.tiff' @ error/cache.c/OpenPixelCache/4083"

Исходные лимиты ресурсов:
Imagick::RESOURCETYPE_MEMORY = 268435456
Imagick::RESOURCETYPE_MAP = 536870912
Imagick::RESOURCETYPE_AREA = 128000000
Imagick::RESOURCETYPE_DISK = 1073741824


Если, задать эти лимиты хоть на 1 единицу выше, он сбрасывает до исходных значений.
Например

Imagick::setResourceLimit(Imagick::RESOURCETYPE_MEMORY, 1024435456);
Imagick::setResourceLimit(imagick::RESOURCETYPE_MAP, 1536870912);
Imagick::setResourceLimit(IMagick::RESOURCETYPE_AREA , 256000000);
Imagick::setResourceLimit(IMagick::RESOURCETYPE_DISK , 4073741824);



Буду благодарен описанию решения моей проблемы.
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 150 000 до 220 000 руб.
Spectrum Екатеринбург
от 130 000 до 200 000 руб.
06 дек. 2019, в 03:49
300 руб./за проект
06 дек. 2019, в 01:32
10000 руб./за проект
06 дек. 2019, в 00:20
4000 руб./за проект