Задайте каталог PHP ImageMagick tmp

Я пытаюсь установить временную директорию, которую ImageMagick использует для преобразования файлов. В настоящее время при преобразовании больших PDF-файлов временная папка быстро доходит до 2 или 3 терабайт. Это слишком много для хранения на диске серверов, поэтому я планирую использовать AWS EFS для хранения всего. У меня есть накопитель EFS, установленный в /efs и я пытаюсь использовать его для временного пути.

Как я могу установить это в ImageMagick? Я пробовал следующее:

  • Установка PHP-папки для загрузки temp в php.ini – это разрывает загрузку файлов и не подходит
  • Изменение файла config.xml ImagickMagick, который не работает.
  • Добавление переменной среды MAGICK_TMPDIR=/efs
  • Добавление переменной окружения MAGICK_TEMPORARY_PATH=/efs

Независимо от того, что я делаю, он всегда делает преобразование в папку /tmp . Как я могу установить это?

Разве это отличается от PHP? По-видимому, в версии командной строки вы можете сделать это:

 convert -define registry:temporary-path=/Volumes/external/tmp 

Мой текущий PHP-код – это, мне было интересно, есть ли функция для установки tmp dir здесь? Как $imagick->setTmpDir('/efs') . Я искал PHP API и не могу найти способ сделать это.

 $imagick = new Imagick(); $imagick->setResourceLimit( Imagick::RESOURCETYPE_MEMORY, 5 ); //Limit RAM and force script to convert using disk swap $imagick->setResolution(600,600); //Set DPI to 600 $imagick->setCompressionQuality(100); $imagick->readImageBlob($file); //Load the image $imagick->deskewImage(40); //Deskew image $imagick->setImageFormat('jpg'); //Set format $imagick->writeImages(storage_path("app/docs/".$doc->id.".jpg"), false); //Save the converted image 

Есть идеи? Я делаю это в течение нескольких дней!

Сервер Ubuntu.

Related of "Задайте каталог PHP ImageMagick tmp"

У Imagick есть метод setRegistry. http://php.net/manual/en/imagick.setregistry.php

Вы можете использовать его для установки так называемого temp-пути imagemagick:

 $i = new Imagick(); $i->setRegistry('temporary-path', '/efs');