人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

php・GDでの画像生成について。

phpとGDで画像サムネイル作成や画像へのテキスト表示など、画像生成を行なっています。
ただ、アクセス数が増えると、結構な負荷になって困っています。

そこで、一度生成した画像をファイルへ保存して、
2度目からはそのファイルを読み込んで表示する方向で検討しています。

ただ、サーバーの容量の問題もあるので、
例えば最大容量10ギガとして、
それ以下にキャッシュを抑えるために、何か良い方法があれば、
アドバイス頂けると助かります。

画像を100kb前後として、ファイル5万個で古いのから削除する方法がいいのかな、なんて考えてます。


●質問者: onigirin
●カテゴリ:ウェブ制作
✍キーワード:Gd PHP アクセス数 アドバイス キャッシュ
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● tsukasa57
●27ポイント

たぶん、キャッシュを作りたいと言うことだと思います。

php はよく知らないのですが

http://www.phpclasses.org/browse/package/313.html

というキャッシュライブラリを見つけました。

このライブラリは最も長い間使われなかったファイルから順に削除していく(LRUという)ものです。

キャッシュが必要になることはたくさんあるので、探すと他にも同様のライブラリがあると思う。

◎質問者からの返答

どうもありがとうございます。

LRUというのですね。

一つ勉強になりました。

上記のライブラリはうまく使えなかったのですが、

LRUの仕組みを探して見ますね。


2 ● goodvn
●27ポイント

もし cron が使えるなら,一定のルールで古いファイルを探して消していけば ok です

% find -mtime .... -exec rm -fr {} \;

みたいな感じになるでしょうか

ルールは,実際の容量を見ながら決めていけばよいでしょう

◎質問者からの返答

どうもありがとうございます。

cronで消してみたいのですが、

ファイルが●個以上で削除、ということが可能なら助かりますねえ。

ファイル数列挙して・・・。

シェルスクリプトに書けばいいのか。

ちょっと調べながら試してみますね。


3 ● pahoo
●26ポイント

もしDB(SQLiteで十分)が利用できるなら、リスクエスト頻度の高い画像だけ残すようにしてみてはどうでしょうか。

DBには、画像ファイル名とリクエスト回数を記録するようにします。

  1. クライアントからのリクエストを受け、すでにDBに存在している画像なら、DBからファイル名を取り出し、当該画像ファイルを表示する。
  2. DBに存在しない画像なら、画像を生成し、ファイルとして保存し、その画像ファイル名をDB登録する。
  3. 1,2のいずれの場合も、DBの画像ファイルのリクエスト回数を1つだけ増やす。
  4. 以上、1?3のプログラムは、現在使っている PHP + GD スクリプトを改造すればよい。
  5. DBのリクエスト回数を参照して、リクエスト回数の少ないものを削除する PHP スクリプトを作成し、cron で定期的に走らせるようにする。
◎質問者からの返答

どうもありがとうございます。

DBを参照することと、このままphp/GDで画像生成するのと、

どちらが負荷が軽くなるのか試してみる価値はありますね。

ただ、今回はDB使えないので、他の方法を試してみます・・・。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ