Imagick не хватает мощности процессора? - PullRequest
1 голос
/ 28 октября 2010

Я пытаюсь сделать обрезку анимированного GIF на VDS с этой конфигурацией:

~ 800 МГц и 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
)

Update2:

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

Кто-нибудь пробовал?

Ответы [ 3 ]

0 голосов
/ 28 октября 2010

Я собираюсь предположить, что $s['src'] содержит удаленный URL.

Это может означать, что ваша настоящая проблема в получении удаленного изображения. Брандмауэр или что-то еще может вызывать тайм-аут сценария.

Попробуйте сначала с локальным изображением. Я бы поспорил на половину пива, что это прекрасно работает тогда. В этом случае поэкспериментируйте с извлечением удаленного файла, используя вместо этого file_get_contents(). Мне кажется, я где-то читал, что у конструктора IMagick есть проблемы с URL.

0 голосов
/ 14 декабря 2010

Попробуйте запустить скрипт php в командной строке, чтобы увидеть, имеет ли он какое-либо отношение ко времени выполнения.

shell> php <your-script-name>

Возможно, вам придется заменить полный путь на php, если его нет в вашем PATH переменная окружения.

Имейте в виду, что ImageMagick оптимизирован для качества;не для скорости.Есть похожая библиотека под названием GraphicsMagick , которая, как они говорят, хорошо работает при низких ресурсах.Вы можете попробовать его, если у вас все еще есть проблема с ресурсами.

0 голосов
/ 28 октября 2010

Вы можете увеличить максимальное время выполнения php, я считаю, что по умолчанию оно составляет 60 секунд.

Во время выполнения с set_time_limit или ini config с max_execution_time .

Хорошо, поцарапайте, я вижу, вы уже это делаетеDoh!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...