0

私はPHPとGraphicsmagickを使用しており、画像のバッチをアップロードするユーザーがたくさんいます。

これらのバッチは、1つのイメージから数百、場合によっては数千まで実行されます。

これらの元のアップロードをAmazonS3に保存する必要があります。また、各画像のサイズを3つの異なるサイズに変更し、それらのコピーをAmazonS3に保存する必要があります。

これは、可能な限りリアルタイムである必要があります。

最高のパフォーマンスを得るために、これをどのように設計しますか?

4

1 に答える 1

3

達成するのは非常に簡単です。ユーザーが画像をアップロードしたら、それをメッセージキューに追加します( lpush )。キューにメッセージを追加するとき、あなたはあなたのウェブサイトのユーザーを仕事(待っている)で悩ませているのではなく、代わりにそれをオフラインで行います。非常に強力で、高速で、使いやすいので、私はredisを選びます。キャッシュのニーズなどにも使用できるため、redisを調べる必要があります。それはいいです。次に、キュー内のメッセージを(1つずつ)処理( blpop )する以外に何もしない2つのワーカープロセスを生成します。彼らはキューからメッセージを受け取り、そこでジョブ(画像のサイズ変更)を行い、完了するとキューから次のメッセージを受け取ります。とてもシンプルでとても速いです。特に、たとえばC(Cは非常に高速な言語)にコンパイルされるPHP拡張機能を使用する場合phpredis

PS:redisを説明する優れた入門チュートリアル=> http://simonwillison.net/static/2010/redis-tutorial/(必読;))

于 2011-07-02T19:03:34.790 に答える