我正在用PHP实现一个图像上传系统,需要以下内容:
categories
为此,我想到了两种方法:
1.按文件夹进行分类
每个类别都有自己的文件夹,PHP将通过这些文件夹检测类别。
优点
函数来操作和收集有关文件夹和文件的信息。
缺点
中保存完整路径的痛苦。
2.按数据库进行分类
数据库中的每个图像都有一个catID (或多个catID),而PHP将查询数据库以获取图像。
优点
容易实现的multi-categories
缺点
你觉得哪种更好?还是有第三个,完全不同的方法,我错过了?
请注意,我不需要代码,我可以自己实现,我想找到要实现的东西。
很想听听你的消息。
发布于 2012-02-04 15:29:07
我最终给出了这个问题最好的答案:Effeciently storing user uploaded images on the file system。
就像一种魅力。谢谢你所有的答案!
发布于 2012-01-23 10:18:59
我认为第二个选项更好,DB给了您更大的灵活性,如果您设置了正确的索引,我认为性能要好于文件系统。
在文件系统方法中,每个映像仅限于一个类别,在DB中可以在图像上设置多个类别。
Db是更混乱的,很抱歉,在db中找不到原因--它会更混乱,也许您的意思是文件系统上没有组织文件,但是您仍然需要组织文件系统上的文件,并将它们划分到多个文件夹中,以获得更好的性能。如果您想获取所有上传的图像,您可以查询数据库中的所有这些文件,这比所有类别文件夹上的文件要快得多。
在使用DB方法组织文件系统中的文件时,我的意思是需要将它们分成几个文件夹,实际上这取决于您如何预测图像的上传:
如果您预测上传将在很长时间内传播,那么我认为最好将文件按时间范围(日、周、月)放置在目录中--例如,如果我现在上传了一个图像,它将转到"/web_path/uploaded_photos/week4_2012/some_generated_string.jpg"
需要大量查询DB的第二个缺点并不完全正确,因为您将需要文件系统上同样数量的查询,而这些查询要慢得多。
祝好运。
PS不要忘记为上传的任何图像生成一个新的文件名,这样不同的用户上传相同的图像名或相同的用户就不会发生冲突。
发布于 2012-01-23 10:04:08
我倾向于采用数据库方法。您列出了大量查询数据库的必要性,这是一个骗局,但这正是构建数据库的目的。正如您自己指出的,当涉及到属于多个类别的项时,层次结构有严重的限制,虽然您可以使用本地PHP函数导航树,但这真的比运行SQL查询更快或更高效吗?
当然,实际的文件数据需要放在某个地方,而BLOBS是有问题的,所以我会将实际的文件存储在文件系统中,但是关于图像(元数据)的所有数据最好放在数据库中。数据库为您提供的额外灵活性值得所涉及的工作。
https://stackoverflow.com/questions/8969695
复制相似问题