Php Imagick内存和CPU限制
我使用的是Imagick的最新版本&php5.3。当我尝试为下面的代码创建图像缩略图时,脚本使用了太多的CPU。如何在Imagick上设置资源消耗限制Php Imagick内存和CPU限制,php,cpu-usage,imagick,Php,Cpu Usage,Imagick,我使用的是Imagick的最新版本&php5.3。当我尝试为下面的代码创建图像缩略图时,脚本使用了太多的CPU。如何在Imagick上设置资源消耗限制 $thumb = new Imagick(); $thumb->readImage($this->tmp_file); $thumb->thumbnailImage(200, null); $thumb->writeImage($this->thumb_file); $thumb->destroy(); 谢谢
$thumb = new Imagick();
$thumb->readImage($this->tmp_file);
$thumb->thumbnailImage(200, null);
$thumb->writeImage($this->thumb_file);
$thumb->destroy();
谢谢。你想做什么?如果您试图在用户每次访问页面时创建缩略图,您将很快在CPU上创建一个非常沉重的负载。您可以通过只生成一次图像并将其保存到缩略图目录来解决此问题 还可以使用PHP.ini或ini_set命令将PHP设置为具有特定内存限制。见和 我不认为您可以在imagemagick中专门设置内存限制,除非您可以自己设置命令行参数上一次回答我的建议 A.利用缓存 B.不要总是生成拇指 C.使用诸如Gearman或beanstalkd之类的求职系统来生成拇指,这样你就不必立即这么做 示例仅在修改原始文件后生成thumb
$file = "a.jpg" ;
$thumbFile = "a.thumb.jpg" ;
$createThumb = true;
if(is_file($thumbFile))
{
if((filemtime($file) - 10) < filemtime($thumbFile));
{
$createThumb = false;
}
}
if($createThumb === true)
{
$thumb = new Imagick();
$thumb->readImage($file);
$thumb->thumbnailImage(50, null);
$thumb->writeImage($thumbFile);
$thumb->destroy();
}
我相信您可以使用以下方法更改Imagick的限制: 可用类型常量:
Imagick::RESOURCETYPE_AREA
Imagick::RESOURCETYPE_DISK
Imagick::RESOURCETYPE_FILE
Imagick::RESOURCETYPE_MAP
Imagick::RESOURCETYPE_MEMORY
使用上面列出的相同常数,您可以查看当前使用的限制之一:
Imagick::getResourceLimit( $type )
Imagick::getResourceLimit( $type )