2011-07-26 6 views
1

PHP(CodeIgniter)Webアプリケーションでイメージのサイズ変更を処理する最もスケーラブルな方法について、いくつかのオプションを検討しています。イメージをいくつかのサイズにリサイズし、それらをAmazon S3にプッシュする必要があります。だから私がこれまでに出てきたオプションは次の通りです:スケーラブルな非同期イメージリサイズ

  1. ファイルがアップロードされると、キューに追加されます。バックグラウンドのPHPやPython(明らかにPHPは長時間実行されるプロセスには悪い)プログラムを常時実行し、キューを調べて処理してからx秒間スリープします。

  2. ファイルがアップロードされると、そのイメージを処理する新しいPHPプロセスが生成されて終了します。

  3. lightspunのようなサードパーティのサービスを使用します(これらは、現時点では顧客を受け入れていない。そこに他の同様のサービスはありますか?)

おそらく、私が考慮されていないより良いオプションはありますか?

+0

https://github.com/eahanson/imageproxy – hakre

答えて

3

これは信頼性が高く、フロントエンドをダウンさせることなくバックエンドで作業を行うことができるため、最初の選択肢があります。

また、キューが極端になった場合に別のサーバーに移動できるので、はるかに上手く拡張できます。

+0

SQS + EC2を使用すると、このキュー+ワーカーアプローチは安価で簡単に拡張できます。 –

1

あなたの最初のアイデアは、すでに述べた理由でうまくいくと思いますが、ユーザーの処理時間に負担がかかり、ユーザーエクスペリエンスを損なうことなくイメージサイズなどを追加できます。コマンドラインイメージmagickツールを使用して画像処理phpを使って長時間実行されているプロセスではforkを使用して運が少しありました。 http://php.net/manual/en/function.pcntl-fork.php