我正在尝试设置 ImageMagick 用于转换文件的临时目录。目前,在转换大型 PDF 时,临时文件夹很快就会达到 2 或 3 TB。这对于服务器磁盘来说太大了,因此我计划使用 AWS EFS 来存储所有内容。我将 EFS 驱动器安装在/efs
并尝试将其用于临时路径。
如何在 ImageMagick 中进行设置?我已经尝试过以下方法:
- 在 php.ini 中设置 PHP 的临时上传文件夹 - 这会破坏文件上传并且不好
- 更改ImagickMagick的config.xml文件,这不起作用。
- 添加环境变量
MAGICK_TMPDIR=/efs
- 添加环境变量
MAGICK_TEMPORARY_PATH=/efs
无论我做什么,它总是会进行转换/tmp
文件夹。我该如何设置这个?
因为是PHP所以有什么不同吗?显然在命令行版本中你可以这样做:
convert -define registry:temporary-path=/Volumes/external/tmp
我当前的PHP代码是这样的,我想知道是否有一个函数可以在这里设置tmp目录?像一个$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
您可以使用它来设置 imagemagick 临时路径,如下所示:
$i = new Imagick();
$i->setRegistry('temporary-path', '/efs');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)