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);



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

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

Похожие вопросы