更多的是与架构相关的问题,对不起,如果我在错误的堆栈中提问。
他们把它们放在一个文件夹中吗? 像
$ uid。$ md5(随机)。$ name保存在一个 夹
folder/5231.124wdadace123214.arandomname.jpg
folder/42.15125dawdaowdaw232.arandom2name.png
folder/etc
或
$ UID / $ MD5(随机的)。$名称
5231(uid)/12421adwawda2321.arandomname.jpg
42/15125awdawdwadwa232.arandom2name.png
etc/2323awdwadwadaw.logo.png
我在想什么是第二个更好?
因为在Windows我在一个文件夹中有很多照片
是的,打开它需要时间。
答案 0 :(得分:1)
这主要取决于文件系统。对于像NTFS或ext3这样的现代文件系统,将大量文件保存在同一目录中不是问题,但是一些较旧的文件系统无法处理它。
但是,根据某种方案将文件分区为子目录可能仍然是一个好主意,只是为了使它们可以通过各种工具(可能有各自的大量目录问题)进行管理,例如备份。顺便说一句,在Windows资源管理器中打开一个目录就算是这样了。
答案 1 :(得分:1)
我为我的网站编写了一个函数,它将用户ID转换为两级子目录层次结构,将每个级别的子目录限制为1000.
function get_image_dir($gid) {
$d = str_split(str_pad($gid, 6, "0", STR_PAD_LEFT), 3);
$wdir = "/images/members/" . $d[0] . "/" . $d[1] . "/" . $gid;
return $wdir;
}
(实际上,我使用原始用户ID添加第三级来处理以1,000,000为单位的翻转。
/images/members/000/001/1
/images/members/000/002/2
...
/images/members/999/999/999999
/images/members/000/000/1000000
/images/members/000/001/1000001
在这些子目录中,我进一步基于
进行隔离最终结构看起来像
/images/members/000/001/1/album1/original
/images/members/000/001/1/album1/50x50
/images/members/000/001/1/album1/75x75
/images/members/000/001/1/album1/400x300
函数中的str_split(str_pad())
可能不是最佳的,但现在它可以正常工作。
答案 2 :(得分:0)
如果我们谈论的是将图片保存在不同文件夹中的数千个,这取决于您期望有多少图像,这使得计算机更容易扫描目录中的文件
答案 3 :(得分:0)
我这样做的方法是使用包含id号的文件夹
/img/0-100/1
/img/101-200/102
这将为您提供查找图像的简便方法,文件夹将保持很小。 并且没有扩展名,因为我将其保存在数据库中。
答案 4 :(得分:0)
是的,一个文件夹中的大量文件可能会减慢对该文件夹中文件的搜索速度。至少在主要操作系统中。从理论上讲,它不一定是这样。
其他网站也使用日期。不只是用户ID或图像ID。另一种做同样事情的方法。