1

PHPを使用して画像ギャラリーを構築しているとしましょう。ここで、ユーザーは写真をアップロードできます。すべてのユーザーは、サーバー側に1つのフォルダーを持ち、そこにすべての画像があります。

ここで、ブラウザで情報を提供する必要があるとしましょう。ユーザーは画像を閲覧できるようになり、画像のサイズ、画像のサイズ、さらにはEXIF情報など、画像に関する多くの情報を確認できるはずです。

私はこれを2つの方法で行うことができます:

  1. 画像をアップロードするときに、画像に関するすべての情報をデータベースに保存します。
  2. PHP関数を使用してフォルダーを参照し、すべての画像から情報を取得します。

私はファイルマネージャークラスのようなものを持っています。これは、deleteDir、deleteFile、countItems、getFileSize、getDirSizeなど、サーバー側のファイルですべての操作を実行できます。また、画像を検査するクラスをもう1つ作成するだけで簡単に作成できます。その後、画像をアップロードするだけで、リレーションデータベースを必要とせずに、フォルダーから画像の情報を取得できます。

そして今、皆さんが待ち望んでいた質問は次のとおりです:... :)

より速い、第1または第2の解決策は何でしょうか?そのサイトが大量のトラフィックを獲得しているとしましょう。サーバーにあまりストレスをかけずに高速にしたい場合、どのソリューションが良いでしょうか?

4

4 に答える 4

3

実際、私はあなたのような状況になりました、これが私の解決策です:

画像をアップロードするときに、画像に関するすべての情報をデータベースに保存します。

なんで?

私は2つの方法をテストしました:

phpを使用して1000回の画像情報を取得します。

データベースから画像情報を1000回取得します。

そして結果は:

データベースからの画像情報の取得はますます速くなっています。

少なくとも最後のではなく:

画像情報分析をしたい場合はどうしますか?

すべての情報をデータベースに保存すると、簡単に取得して分析できますが、phpを使用して情報を取得する場合はどうでしょうか。想像するのは難しいです。

したがって、画像をアップロードするときは、画像に関するすべての情報をデータベースに保存するだけです。

幸運を。

于 2012-10-18T02:46:45.387 に答える
0

データを別々の場所に保存すると、メンテナンスの問題が発生する可能性があります。各フォルダー内の画像のメタデータをシリアル化し、そこにあるファイルにダンプします。ファイルにgzip圧縮を使用する場合、取得と保存は非常に高速である必要があります。

于 2012-10-18T02:32:28.423 に答える
0

データベースからデータを読み取ってキャッシュに保存したら、データベースに保存します。

物事をやり直すことは、特にそれが常に起こる場合は常にコストがかかります

于 2012-10-17T22:48:47.707 に答える
0

これらの画像のサイズによっては、ユーザーが閲覧しているときに元の画像ではなくサムネイルを表示したい場合があります。つまり、画像を生成する必要があります。アップロード時にサムネイルを生成し、すべてのファイル情報を取得します。次に、ファイル情報をデータベースに保存し、元のサムネイルとサムネイルをファイルシステムに配置します。トラフィックが多い場合は、そこにもmemcacheをスローします。

于 2012-10-17T22:51:38.497 に答える