5

私の主な理由は、さまざまなオプションについて意見を求めることです。ビデオに関連付けられているディレクトリにファイル/サムネイルがあり、それらを取得する必要がある場合は、 glob() function glob(DIRECTORY./file_name*.jpg); を使用します。ビデオのすべての JPG ファイルの配列を返します。

glob 関数自体は非常に高速ですが、各ページに 20 から 50 のビデオがあるため、20 から 50 の glob 呼び出しが発生する可能性があるため、使用方法について心配していますそこに glob() の代わりに; ?

より良い代替手段がある場合は、お知らせください。

ありがとう。

4

2 に答える 2

6

パフォーマンスに関する質問ではよくあることですが、結果はかなり異なる場合があるため、答えは次のとおりです

開始する場所は、現在行っていることを行うのにどれくらいの時間がかかるかを測定することです。これが完了したら、次のことを自問してください。これで十分な速さですか? 物事を行うための最速の方法ではないかもしれませんが、それでも非常に高速であるため、速度は問題ではありません。

ファイル グロブの取得に費やされるページの処理時間はどれくらいですか? 1%?10%? 50%? このパーセンテージが高いほど、やり方を変えることを検討する価値が高くなります。

また、サイト全体のパフォーマンスはどうですか?各ページの読み込み速度を 2 倍にしたら、人々は気付くでしょうか? そうでない場合は、パフォーマンス チューニングを行うべき明らかな場所が見つかったとしても、まだパフォーマンス チューニングを行う価値がない可能性があります。

改善できると思われる場合は、データベースを使用して機能を実装し、それがより高速かどうかを測定してください。繰り返しますが、これを使用した結果は非常に変動する可能性があります。たとえば、データベースに大きな負荷がかかっている場合データベースから結果を取得するのが非常に遅くなる可能性があります。ほとんど使用されていない非常に強力なデータベースがある場合、それは非常に高速である可能性があります。テストだけが真実を教えてくれます。

ディスク上の実際のファイルに基づいてファイル名を見つけるため、現在行っている方法がよりシンプルで保守しやすいように思われることを付け加えておきます。データベースを使用しようとすると、データベース内のファイル名のリストとファイルシステム内のファイルのリストの同期について心配する必要があります。

ただし、1 つのディレクトリに非常に多数のファイルが含まれていると、多くのファイルシステムのパフォーマンスが低下することに注意してください。このような場合は、ファイルを複数のサブディレクトリに分割することを検討してください。一般的なアプローチは、az という名前のディレクトリを作成し、「a」で始まるすべてのファイルを「a」ディレクトリに、「b」で始まるすべてのファイルを「b」ディレクトリに、というように配置することです。何万ものファイルがあると重要であり、その場合でも、特定のファイルシステムとそれが実行されるハードウェアに依存します。

(コメントに基づいて編集:)

結果を事前に計算してデータベースに保存することについて話しているので、データベースに入れるよりも良いアプローチは、http://memcached.org/ のようなキャッシュ サーバーを使用することです。これはハイブリッド アプローチと見なすことができます。つまり、現在と同じように処理を行いますが、結果が必要になるたびに、最初にキャッシュをチェックして結果が含まれているかどうかを確認します。そうであれば、キャッシュされた結果を使用し、そうでなければ、新しいグロブを計算します。これにより、データベースとファイルシステムの同期を維持するという問題が回避されます。これは、古いキャッシュ エントリが期限切れになり、新しい正しいエントリに置き換えられる可能性があるためです。

于 2012-08-31T13:27:48.403 に答える
0

ビデオ自体の情報を既にデータベースに保存している場合は、ビデオ データを保持するテーブルにビデオごとのサム数だけを保存することを検討してください。これは、既にクエリしたレコード内のフィールドを参照するだけでよいため、完全なファイル名の別のテーブルをクエリするよりもはるかに高速です。これは、現在の 2 つのアイデアの間の良い妥協点かもしれません。ただし、親指の名前が一貫していてプログラム可能であることを確認する必要があります。たとえば、ビデオ 123 に 4 つのサムがある場合のみ、次のように生成できます。

/path/to/video_123/thumb_01.jpg
/path/to/video_123/thumb_02.jpg
/path/to/video_123/thumb_03.jpg
/path/to/video_123/thumb_04.jpg
于 2012-08-31T13:48:07.420 に答える