为每个用户创建一个文件夹的坏主意?

时间:2011-09-21 13:23:55

标签: php apache

我想知道为每个用户创建一个文件夹是不是一个坏主意。因此,可以使用img.mysite.com/UserId/image.jpg访问每个用户的任何图像

7 个答案:

答案 0 :(得分:5)

根据我的经验,我会说完绝的坏主意 最近,我正在开发一个基于社交网络的应用程序 它现在拥有大约15000多名用户。

我目前正在管理该网站。

问题在于,你会发现它最初很难管理,但后来会出现问题 始终必须跟踪权限 创建和删除与数据库相关的文件夹以实现同步 此外,如果您在共享主机,许多主机提供商,他们不会显示任何文件管理器的所有文件夹。通过文件管理器可以看到的文件夹的最大数量是2000与客户关怀支持您只能访问第一个10000文件夹。 文件夹的非Ascii名称也将是另一个问题。

以后这对你来说将是一个很大的问题。

我建议不要这样做。

答案 1 :(得分:4)

这可能会成为大量目录,因此请谨慎some filesystems限制单个目录中的子目录数。将生成的内容分解为多个目录是很常见的。您可以按日期执行此操作,或者分解一些标识符(哈希值或图像的自动增量ID号)以创建更深层的目录结构。例如:

  • avatars / 000 /(图1-999)
  • avatars / 001 /(图片1000-1999)
  • avatars / 002 /(图片2000-2999)

AKA目录前缀为floor(ID / 1000)

可能有一种情况是从文件系统中抽象出你的URI,所以除了作为程序员之外,文件存储在后端的位置并不重要。

答案 2 :(得分:1)

不,这不是最好的主意。

如果单独文件夹的唯一目的是使您可以在您建议的结构中使用“友好”网址,那么我建议您搜索网址重写

如果您正在尝试解决其他问题,请发表评论并告知我们。

答案 3 :(得分:1)

没有理由因为性能原因而成为问题。从组织的角度来看,它比将它们全部放在同一个文件夹中更清晰。

答案 4 :(得分:0)

我认为这将是更好的格式:
http://img.mysite.com/userid_imageid.jpg

然后你可以这样做数据库:

usersimgs

答案 5 :(得分:0)

在您的ftp上使用一个文件夹,并建立一个良好而稳定的数据库,将同一个人的所有照片链接在一起。不是那么难:)

答案 6 :(得分:0)

对于较小的网站,这不是一个可怕的想法,但有一点需要注意:

必须将文件创建/删除处理抽象为一种机制!

确保您的所有代码都使用此机制,该机制应该能够存储,检索和删除,就是这样。然后,在将来,如果您想要更改存储文件的方式,可以非常轻松地完成。

P.S。当我说出你的所有代码时,我的意思是所有你的代码。例如,我有任何匹配的GET

^img.mysite.com/(\w+)/(\w+\.jpg)$

由单个方法处理,该方法调用我上面描述的机制。