gpt4 book ai didi

php - 图片上传存储策略

转载 作者:IT王子 更新时间:2023-10-29 01:12:15 25 4
gpt4 key购买 nike

当用户上传图片到我的网站时,图片会经过这个过程;

  • 用户上传图片
  • 将图片元数据存储在数据库中,给图片一个唯一的id
  • 异步图像处理(缩略图创建、裁剪等)
  • 所有图片都存储在同一个上传文件夹中

到目前为止,该网站还很小,上传目录中只有大约 200,000 张图片。我意识到我远未达到目录中文件的物理限制,但这种方法显然无法扩展,所以我想知道是否有人对处理大量图像上传的上传/存储策略有任何建议。

编辑:创建用户名(或更具体地说,用户 ID)子文件夹似乎是一个很好的解决方案。通过更多的挖掘,我在这里找到了一些很棒的信息; How to store images in your filesystem
但是,如果购买 CDN,这种 userid dir 方法是否可以很好地扩展?

最佳答案

我之前回答过一个类似的问题,但我找不到它,也许 OP 删除了他的问题......

无论如何,Adams solution似乎是迄今为止最好的,但它不是防弹的,因为 images/c/cf/(或任何其他 dir/subdir 对)仍然可以包含多达 16^30 个唯一哈希 如果我们计算图像扩展名,文件数量至少要多 3 倍,远远超过任何常规文件系统可以处理的数量。

AFAIK,SourceForge.net 也将此系统用于项目存储库,例如 "fatfree" project将放置在 projects/f/fa/fatfree/,但我相信它们将项目名称限制为 8 个字符。


我会将图像哈希与指示图像何时上传/处理的 DATE/DATETIME/TIMESTAMP 字段一起存储在数据库中然后将图像放在这样的结构中:

images/
2010/ - Year
04/ - Month
19/ - Day
231c2ee287d639adda1cdb44c189ae93.png - Image Hash

或者:

images/
2010/ - Year
0419/ - Month & Day (12 * 31 = 372)
231c2ee287d639adda1cdb44c189ae93.png - Image Hash

除了更具描述性之外,这种结构足以托管数十万张(取决于您的文件系统限制)几千年来每天的图像,这是就像 Wordpress 和其他人做的那样,我认为他们在这个上做对了。

可以在数据库中轻松查询重复的图像,您只需创建符号链接(symbolic link)。

当然,如果这对您来说还不够,您可以随时添加更多子目录(小时、分钟、...)。

我个人不会使用用户 ID,除非您的数据库中没有该信息,因为:

  1. 在 URL 中披露用户名
  2. 用户名是不稳定的(您也许可以重命名文件夹,但仍然...)
  3. 假设用户可以上传大量图片
  4. 毫无用处 (?)

关于 CDN,我看不出这个方案(或任何其他方案)不起作用的任何原因......

关于php - 图片上传存储策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2648664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com