web-dev-qa-db-ja.com

アップロード時またはその他のメモリを意識した方法で画像スタイルを生成しますか?

D7サイトがあり、devel_shutdown();で約55MB移動しています。ほとんどのキャッシュされていないページで、サイトの周りのさまざまなスタイルにリンクされた画像を含む移行されたコンテンツがたくさんあり、その多くは現在生成されていません。

PHPメモリ使用量の許容値を130mbに増やした場合(私はDreamhost共有ホスティングを使用しているため、150mbが個々のプロセスのトップエンドです)、画像は正常に生成されます。変更しないままにしておくと、 90mb、画像生成が失敗し始めます。

2つのオプションがあるようです:

a。仮想プライベートサーバーまたはその他のホスティング関連の修正を通じて、より多くのRAMを取得します。

b。私の同僚の提案で、実行中のユーザーに先立って画像を生成する手間のかかる方法を見つけてください。

オプションBに関しては、gasp!、WordPressを使用しています。メモリ状況(異端!狂気!Spartaaaaaa!)。

説明のために—ページがロードされ、PHPがメモリを解放した後、サムネイルがアップロードされると生成されます、顕著なwhen WordPressは、アップロードプロセス中に「クランチ」と言います。これにより、ユーザーがそれらを表示するときに遅延が発生せず、CMSと画像ライブラリはそれらの1つを失敗させます。

これはDrupalでまったく可能ですか? Cache Warmer のようなモジュールは、cronジョブで設定されている場合、これを行いますか?この方法で物事を行うことにもメリットはありますか?

2
aendrew

「怠惰な」画像スタイルの生成も好きではありません。 100,000枚の写真をインポートした後、すべての画像スタイルをバッチで作成しました。各画像をループして、各画像に5または6のスタイルを作成しました。

すでにすべての画像スタイルが生成されている画像をループしても大きなペナルティはないことに気づきました。したがって、たとえば1時間ごとにcronを実行して、過去1時間(または保存するために2つ)以内に作成または更新されたすべての画像をループし、画像スタイルを作成することができます。

私はこのようなものを使用して画像スタイルを生成しました。生成するものを選択するだけです:

    foreach(image_styles() as $style) {
        if ($style['name'] = 'thumbnail' || $style['name'] = 'medium'){
            $dest = image_style_path($style['name'], $uri);
            print ' '.$style['name']. ', ';
            if (!file_exists($dest)) {
                image_style_create_derivative($style, $uri, $dest);
            }
        }
}

$ uri変数が必要になるだけです。私の場合、バッチジョブを実行したので、file_managedテーブルから直接取得します。

5
uwe

http://drupal.org/project/imageinfo_cache このモジュールは、ファイルのアップロード時に画像キャッシュのプリセットを生成します。はい、それは可能です。そうです、私たちはこれを本番環境で使用しており、速度の大幅な改善が見られます。現在、D6のみ。完全に設定可能なため、特定のファイルフィールドはこれらのプリセットのみを生成します。

また、D6 imagecacheには、さまざまなプリセットを生成するためのいくつかのDrushコマンドがあります。 http://drupal.org/node/587086

2
mikeytown2