Я пытаюсь установить временную директорию, которую ImageMagick использует для преобразования файлов. В настоящее время при преобразовании больших PDF-файлов временная папка быстро доходит до 2 или 3 терабайт. Это слишком много для хранения на диске серверов, поэтому я планирую использовать AWS EFS для хранения всего. У меня есть накопитель EFS, установленный в /efs
и я пытаюсь использовать его для временного пути.
Как я могу установить это в ImageMagick? Я пробовал следующее:
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.
У Imagick есть метод setRegistry. http://php.net/manual/en/imagick.setregistry.php
Вы можете использовать его для установки так называемого temp-пути imagemagick:
$i = new Imagick(); $i->setRegistry('temporary-path', '/efs');