-
ID:u/gV5O さんの質問

Amazonの画像サーバーのようにURLで引数を与えることで、画像サイズを自由に指定できる仕組みを作成したいのですが、逐一PHPでリサイズ→出力をしていると多量の画像を一度に貼る場合など、かなり負荷がかかることが懸念されます。
そもそもPHPではダメなのか、それともPHPでも可能ならばどうすれば良いのか、など教えていただけないでしょうか。

みんなの回答 3 件

ID:O.dKQN さんの回答

したいのって「引数によって都度、画像を静的な生成ファイルを生成する」ってことですかね?であればPHP等のサーバサイドの言語でできます。

大中小みたいなざっくりしたサイズがあって、引数でどれを読み出すかただ選ぶだけ(サーバには3サイズ既に用意してある)とかであれば、JavaScriptとかでも大丈夫かと。

ID:u/gV5O

大中小とサイズをあらかじめ指定すると、あとからの仕様変更に柔軟に対応できないので、前者の方法ですね。
PHPの画像処理はもちろん心得ていますが、何分アクセスが増えた時に多量の画像を逐一処理していると負荷に耐え切れるのか心配なので…。

ID:O.dKQN

ちょっとすぐに「これ」というのは言いづらいんですが、実際のところアクセス時にどれぐらい画像のリサイズが発生するかにもよりそうですね。

たとえば3パターンじゃないにしろ、パターンがある程度決まっているのであれば、1度アクセスのあったサイズは物理的にファイルを残しておけばリサイズの負荷はかからなくなりますよね。
アクセスのたびにDBから読みだしてリサイズして表示するよりはるかに早いはずです。静的ファイルへのアクセスでダメなレベルならサーバのスペックか、負荷分散の設計自体か、その辺をそもそも見直す方がいいのではと思います。

静的ファイルを生成するのがマズいぐらいに、サイズのパターンがバラバラなのであればキャッシュを残すような方法でしょうか。キャッシュはcronで定期的に綺麗にしつつで。

今ある情報からだとそんなイメージでした。

ID:u/gV5O

なるほど。現在の仕様に合わせてキャッシュを残しておけばいいのですね。
早速その方法で試してみます。

ID:eVMQ1R さんの回答

これとかどうですか?

URLにちょこっと細工することで簡単に画像のリサイズができるPHPスクリプト『Smart Image Resizer』 | ID...

http://www.ideaxidea.com/archives/2008/03/urlphpsmart_image_resizer.html
ID:aq6bim

紹介どうもです。
ただキャッシュ機能がないと負荷問題がつきまとうので厳しいですね。

ID:pseEM8 さんの回答

一度生成したヤツはサーバに置いといて、同じサイズの呼び出しはそれを返すようにすりゃいい。大量貼り付けでも重いのは最初の一回だけになる。

ID:aq6bim

回答有難うございます。
昨日そのような仕様をコメントで提案頂いたので、本日無事に完成することができました。

最終更新日:2012-12-12 (5,903 views)

関連するトピックス

ページ上部に戻る