2012-04-24 110 views
0

我正在使用Imagick最新版本& PHP 5.3。当我尝试为图像创建缩略图时(下面的代码),脚本使用太多的CPU。我如何设定Imagick的资源消耗限制?Imagick内存和CPU限制

$thumb = new Imagick(); 
$thumb->readImage($this->tmp_file); 
$thumb->thumbnailImage(200, null); 
$thumb->writeImage($this->thumb_file); 
$thumb->destroy(); 

谢谢。

回答

0

你想做什么?如果每次用户访问页面时尝试创建缩略图,都会非常快速地在CPU上创建非常沉重的负载。您可以通过仅生成一次图像并将其保存到缩略图目录来解决此问题。

您还可以使用PHP.ini或ini_set命令将PHP设置为具有特定的内存限制。见herehere

我不认为你可以专门设置在ImageMagick的内存限制,除非你可以在命令行参数自己(最后答案here

0

我的建议

A.取缓存

的优势

B.不要生成Thumb所有的时间

C.使用作业Queing系统如Gearmanbeanstalkd到产生拇指,这样你就不必立即做

例,只有当原始文件已被修改

$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(); 
} 
产生拇指