使用 PHP 函数 getResourceLimit,您将获得特定类型资源的最大允许量。返回的整数是您在输入参数中指定的资源允许的字节数。对于输入参数选项,您具有 ImageMagick 包的预定义 ResourceType 常量。在代码中,它们看起来像 imagick::RESOURCETYPE_AREA,但您有“_VALUE”选项:undefined、area、disk、file、map 和 memory。
这些特定值分别代表什么?ImageMagick 官方文档在这方面很有帮助。File 表示“打开的像素缓存文件的最大数量”,Area 表示“像素缓存内存中可以驻留的任何一个图像的最大区域(以字节为单位)”,Memory 表示“为像素缓存分配的最大内存量(以字节为单位)”,map 表示“为像素缓存分配的最大内存映射量(以字节为单位)”,disk 表示“像素缓存允许使用的最大磁盘空间量(以字节为单位)”。这是根据 ImageMagick 官方架构页面:https://imagemagick.org.cn/script/architecture.php 。
ImageMagick 官方资源页面包含有关这些参数如何工作的更多信息。例如,文件限制文档提到,当用户超过限制时,任何其他文件将被“缓存到磁盘,并在需要时关闭并重新打开”。(同样,性能下降。)在此查看该页面:https://imagemagick.org.cn/script/resources.php 。
如果有人超过了他们的限制会发生什么?它不会导致 PHP 脚本出错,而只是简单地将用户的活动重定位到非缓存内存(即:虚拟内存,速度很慢)。因此,即使您担心限制,它实际上只表示服务器上用户请求的价值低于其他用户请求的点。
请记住,您始终可以在您自己的服务器上的 policy.xml 文件中设置默认值。
一些示例代码
<?php
// 作者:[email protected]
// Imagick 类型
// ---------------------------------------------
$imagick_type = new Imagick();
// 打开文件
// ---------------------------------------------
$file_to_grab = "image_workshop_directory/test.gif";
$file_handle_for_viewing_image_file = fopen($file_to_grab, 'a+');
// 抓取文件
// ---------------------------------------------
$imagick_type->readImageFile($file_handle_for_viewing_image_file);
// 获取/显示资源值
// ---------------------------------------------
print("Undefined: ");
print($imagick_type->getResourceLimit(imagick::RESOURCETYPE_UNDEFINED));
print("<br><br>Area: ");
print($imagick_type->getResourceLimit(imagick::RESOURCETYPE_AREA));
print("<br><br>Disk: ");
print($imagick_type->getResourceLimit(imagick::RESOURCETYPE_DISK));
print("<br><br>File: ");
print($imagick_type->getResourceLimit(imagick::RESOURCETYPE_FILE));
print("<br><br>Map: ");
print($imagick_type->getResourceLimit(imagick::RESOURCETYPE_MAP));
print("<br><br>Memory: ");
print($imagick_type->getResourceLimit(imagick::RESOURCETYPE_MEMORY));
?>