用户上传文件夹结构

时间:2013-10-06 19:07:44

标签: php directory structure

用户上传的文件夹结构是否会随着网站的增长对性能产生影响?

例如,我考虑过这种存储照片/相册的结构:

Public folder
- Uploads
-- Users
--- User ID
---- Album ID - contains all photos in the album

提前致谢!

1 个答案:

答案 0 :(得分:11)

  

用户上传的文件夹结构是否会随着网站的增长对性能产生影响?

是的,它可以。如果在单个目录中存储太多文件,则可能会降低操作速度。张贴结构非常好。


编辑也许我会快速回答上面的答案而且缺少一些解释,所以下面我将其扩展:

如果您希望用户拥有数万张图片,您应该考虑以下解决方案:

  1. 在数据库中创建表格并将有关每张照片的信息放入其中。从记录ID md5哈希创建照片文件名。

    数据库表示例:

    +-----------------------------------------------------------------+
    | id  filename                            ext created_at  user_id |
    +-----------------------------------------------------------------+
    | 1   c4ca4238a0b923820dcc509a6f75849b    jpg 1381127206  1       |
    | 2   c81e728d9d4c2f636f067f89cc14862c    jpg 1381123406  2       |
    | ..                                      ..  ..          ..      |
    +-----------------------------------------------------------------+
    
  2. 现在拆分md5哈希并从第一个创建目录结构,比方说,6个字母:

    uploads/
      users/
          photos/
              c4/
                  ca/
                      42/
                          c4ca4238a0b923820dcc509a6f75849b.jpg
              c8/
                  1e/
                      72/
                          c81e728d9d4c2f636f067f89cc14862c.jpg
    
  3. 优点:

    1. 您没有向用户公开目录结构。
    2. 很容易找到它的名字。
    3. 有关文件的信息存储在数据库中,因此很容易排序,分组等。
    4. 还要确保在文件系统上启用目录索引(默认情况下在较新的系统上启用)。