Imagick::getResourceLimit

(PECL imagick 2, PECL imagick 3)

Imagick::getResourceLimit返回指定的资源限制

说明

public static Imagick::getResourceLimit(int $type): int

返回指定的资源限制。

参数

type

一个 resourcetype 常量。单位取决于要限制的资源类型。

返回值

以兆字节为单位返回指定的资源限制。

错误/异常

在错误情况下抛出 ImagickException。

参见

添加注释

用户贡献的注释 1 个注释

0
holdoffhunger at gmail dot com
12 年前
使用 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));

?>
To Top