1

次の構成で、VDS でアニメーション gif をクロップしようとしています。

~800MHz および 256 RAM

そして、それは機能していません。メモリとプロセッサを消費するだけで、~ 分後に応答が返されません。

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

誰か試したことがありますか?

4

3 に答える 3

0

PHP の最大実行時間を増やすことができます。デフォルトは 60 秒だと思います。

set_time_limitを使用した実行時、またはmax_execution_timeを使用した ini config 。

わかりました、それをスクラッチします、私はあなたがすでにそれをやっているのを見ます。どっ!

于 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 に答える