アーカイブされたファイルがアップロードされて保存されるサーバーがあります。ファイルの存在の一覧表示とチェックのパフォーマンスを向上させるために、パフォーマンス指向のディレクトリ構造でファイルを編成する必要があります。
ファイルの実際の名前と一時名を保持するデータベース テーブルがあります。
###################################
FILES
###################################
id int auto_increment primary key,
name varchar (255),
temp_name varchar (255)
ルート ディレクトリには、0 ~ 999 の範囲の最大 1000 個のサブディレクトリを含めることができます。各ディレクトリには 1000 個のファイルが保持されます。
したがって、結果は次のようになります
root/0 ==> will hold file having the id range from 1-999
root/1 ==> will hold file having the id range from 1000-1999
root/2 ==> will hold file having the id range from 2000-1999
.
.
.
root/999 ==> will hold file having the id range from 999,000-999,999
ファイルが保存されているディレクトリは、次の式を使用して見つけることができます
$directory = floor($file_id_from_db/1000);
WHERE $file_id_from_db はファイル データベース テーブルから取得されますfiles
。id
.
この問題は、1,000,000 番目のファイルがアップロードされたときに発生し、ファイルを 2 番目のレベルに保存する必要があります。
0 番目のディレクトリ root/0/0 - root/0/999 に 0 - 999 の範囲の第 2 レベルのディレクトリを作成する必要があります。
次に、root/0/999 に到達し、そこに 1000 個のファイルを配置したら、root/999/999 に到達するまで、root/1/999 に移動する必要があります。
私の現在の機能はそのように見えます
function getPath($id){
$result = floor($file_id/1000);
//Second level checks (Tried and crashed and burned)
return "/$result";
}
サブディレクトリを作成するためのロジックを実装する方法がわかりませんか?
提案をありがとう。