首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图片库系统-哪种方法更好?

图片库系统-哪种方法更好?
EN

Stack Overflow用户
提问于 2012-01-23 09:48:37
回答 6查看 605关注 0票数 4

我正在用PHP实现一个图像上传系统,需要以下内容:

categories

  • Allow

  • 让用户对图像进行评论
  • 允许对图像进行分级

为此,我想到了两种方法:

1.按文件夹进行分类

每个类别都有自己的文件夹,PHP将通过这些文件夹检测类别。

优点

  • 结构化外观,易于定位的图像。
  • 使用本机

函数来操作和收集有关文件夹和文件的信息。

缺点

  • 多重分类是
  • 需要在数据库

中保存完整路径的痛苦。

2.按数据库进行分类

数据库中的每个图像都有一个catID (或多个catID),而PHP将查询数据库以获取图像。

优点

容易实现的multi-categories

  • Only映像名保存

缺点

  • 似乎更加混乱,
  • 需要大量查询数据库。

你觉得哪种更好?还是有第三个,完全不同的方法,我错过了?

请注意,我不需要代码,我可以自己实现,我想找到要实现的东西。

很想听听你的消息。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-02-04 15:29:07

我最终给出了这个问题最好的答案:Effeciently storing user uploaded images on the file system

就像一种魅力。谢谢你所有的答案!

票数 0
EN

Stack Overflow用户

发布于 2012-01-23 10:18:59

我认为第二个选项更好,DB给了您更大的灵活性,如果您设置了正确的索引,我认为性能要好于文件系统。

在文件系统方法中,每个映像仅限于一个类别,在DB中可以在图像上设置多个类别。

Db是更混乱的,很抱歉,在db中找不到原因--它会更混乱,也许您的意思是文件系统上没有组织文件,但是您仍然需要组织文件系统上的文件,并将它们划分到多个文件夹中,以获得更好的性能。如果您想获取所有上传的图像,您可以查询数据库中的所有这些文件,这比所有类别文件夹上的文件要快得多。

在使用DB方法组织文件系统中的文件时,我的意思是需要将它们分成几个文件夹,实际上这取决于您如何预测图像的上传:

如果您预测上传将在很长时间内传播,那么我认为最好将文件按时间范围(日、周、月)放置在目录中--例如,如果我现在上传了一个图像,它将转到"/web_path/uploaded_photos/week4_2012/some_generated_string.jpg"

  • If,您不知道如何预测上传,那么我建议您将文件分成一些普通的文件夹,比如图像名上的MD5散列中的前两个字母,例如,如果我的文件名为"photo_2012.jpg“,则散列将为"c02d73bb3219be105159ac8e38ebdac2”,因此文件系统中的路径将为c02d73bb3219be105159ac8e38ebdac2。

需要大量查询DB的第二个缺点并不完全正确,因为您将需要文件系统上同样数量的查询,而这些查询要慢得多。

祝好运。

PS不要忘记为上传的任何图像生成一个新的文件名,这样不同的用户上传相同的图像名或相同的用户就不会发生冲突。

票数 3
EN

Stack Overflow用户

发布于 2012-01-23 10:04:08

我倾向于采用数据库方法。您列出了大量查询数据库的必要性,这是一个骗局,但这正是构建数据库的目的。正如您自己指出的,当涉及到属于多个类别的项时,层次结构有严重的限制,虽然您可以使用本地PHP函数导航树,但这真的比运行SQL查询更快或更高效吗?

当然,实际的文件数据需要放在某个地方,而BLOBS是有问题的,所以我会将实际的文件存储在文件系统中,但是关于图像(元数据)的所有数据最好放在数据库中。数据库为您提供的额外灵活性值得所涉及的工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8969695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档