1

我正在尝试使用此配置在 VDS 上裁剪动画 gif:

~800MHz 和 256 内存

它不工作。它只是吃掉内存和处理器,大约一分钟后没有响应。

http://i192.photobucket.com/albums/z228/Somebi/no-responce.jpg

http://imm.io/1OID

在本地机器上,我创建了一个具有 256 RAM 的虚拟机。一切正常,但我必须承认有点慢......但我在本地机器上有 Duo Core 7400。

我尝试使用以下设置限制 VDS 上的内存使用:

$gif = new Imagick($s['src']);

set_time_limit(0);
$gif->setResourceLimit(Imagick::RESOURCETYPE_MEMORY,32);
$gif->setResourceLimit(Imagick::RESOURCETYPE_MAP,64);

// echo $gif->getResourceLimit(Imagick::RESOURCETYPE_MEMORY);
// echo $gif->getResourceLimit(Imagick::RESOURCETYPE_MAP);
// echo $gif->getResourceLimit(Imagick::RESOURCETYPE_FILE);
// echo $gif->getResourceLimit(Imagick::RESOURCETYPE_DISK);
// echo $gif->getResourceLimit(Imagick::RESOURCETYPE_AREA);
// exit;

$gif = $gif->coalesceImages();

foreach($gif as $frame){
    $frame->cropImage($s['params']['w'], $s['params']['h'], $s['params']['x'], $s['params']['y']);      
    $frame->setImagePage($s['params']['w'], $s['params']['h'], 0, 0);
}   

$gif->writeImages($s['dest_path'] .'/'. $fullname,true);

但是我可以限制处理器的使用吗?

有什么解决慢 VDS 的方法吗?:|

感谢大家!

更新:

   print_r(getimagesize($s['src']));
   exit;

   $gif = new Imagick($s['src']);
   etc...

    Array
(
    [0] => 530
    [1] => 150
    [2] => 1
    [3] => width="530" height="150"
    [bits] => 8
    [channels] => 3
    [mime] => image/gif
)

更新2:

pathinfo($s['src'])

(
    [dirname] => images/tmp
    [basename] => 43138a0723d6ae0799564bd6acb8c7b83c8df483.gif
    [extension] => gif
    [filename] => 43138a0723d6ae0799564bd6acb8c7b83c8df483
)

update3: 如何调试 imagick 扩展?:(

找到了这个包: http: //fr2.rpmfind.net/linux/RPM/fedora/updates/testing/13/i386/debug/php-pecl-imagick-debuginfo-3.0.0-5.fc13.i686.html

有人试过吗?

4

3 回答 3

0

您可以增加 php 的最大执行时间,我相信它默认为 60 秒。

在运行时使用set_time_limit或使用max_execution_time进行ini 配置。

好的,从头开始,我看到你已经这样做了。嗬!

于 2010-10-28T10:30:23.163 回答
0

我将推测其中$s['src']包含一个远程 URL。

这可能意味着您真正的麻烦是获取远程图像。防火墙或其他东西可能会导致脚本超时。

请先尝试使用本地图像。我敢打赌,它会很好用。在这种情况下,请尝试使用file_get_contents()来获取远程文件。我想我在某个地方读到了 IMagick 的构造函数在 URL 方面存在问题。

于 2010-10-28T10:32:30.110 回答
0

尝试在命令行上运行您的 php 脚本,看看它是否与执行时间有关。

shell> php <your-script-name>

php如果它不在您的PATH环境变量中,您可能必须替换完整路径。

请记住,ImageMagick 已针对质量进行了优化;不是为了速度。有一个类似的库,叫做GraphicsMagick,(他们说)它在低资源的情况下运行良好。如果您仍然遇到资源问题,您可以考虑尝试一下。

于 2010-12-14T04:25:57.143 回答