我有一个服务器,存档文件将被上传和存储。为了提高列出和检查文件存在性的性能,我需要将文件组织在面向性能的目录结构中。
我有一个数据库表,它将保存文件的真实名称及其临时名称。
###################################
FILES
###################################
id int auto_increment primary key,
name varchar (255),
temp_name varchar (255)
根目录最多可以包含 1000 个子目录,范围从 0-999。每个目录将包含 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 个文件被上传时会出现问题,然后我必须开始将文件存储在第二级。
我必须在第 0 个目录 root/0/0 - root/0/999 中创建第二级目录,范围从 0 - 999
然后当我到达 root/0/999 并且我已经在其中放置了 1000 个文件时,我需要移动到 root/1/999 等等,直到我到达 root/999/999。
我当前的功能看起来像这样
function getPath($id){
$result = floor($file_id/1000);
//Second level checks (Tried and crashed and burned)
return "/$result";
}
我不知道如何实现创建子目录的逻辑?
感谢您的任何建议。