用于处理用户图像上传的推荐架构

And*_*ird 5 php upload web-applications photo

过去,我以两种不同的方式处理用户图片上传:

  • 将图像数据保存在数据库表中,并通过PHP脚本加载它
  • 上传图像,将其转换为jpeg,将其放入目录并通过HTML标记加载

第一个选项工作得相当好,但我必须对上传的图像保持相当大的限制.第二种选择是有效的,除了PHP的图像库通常会破坏文件转换(我认为可以通过使用ImageMagick来修复).

我现在面临着第三次这样做,在一个潜在的更大规模的用户.我已经计划在上传后使用ImageMagick对图像进行一些后期处理.我希望尽可能减少对图片上传的限制,甚至可能保留每个人上传的照片.

有时会有数百个用户的照片上传将作为缩略图一次显示在屏幕上.将这些存储在数据库中并为每个数据库提取它们并通过PHP显示似乎不是一个好方法,但是将所有图像放入单个目录中也不是.

在这种情况下你的建议是什么?您是否使用上述选项之一,或者您有不同的解决方案?

Dav*_*esh 5

将这些存储在数据库中并为每个数据库提取它们并通过PHP显示似乎不是一个好方法,但是将所有图像放入单个目录中也不是.

你可以采取混合方式.

将图像存储在文件夹的层次结构中(根据您确定的适合您的应用程序的任何方案).存储数据库中每个图像的完整路径.

在后台作业中,生成图像的缩略图(比如使用ImageMagick),其文件名与图像本身略有不同(例如:在前面添加'thumb-'),但它们与真实图像一起存储.您可以在数据库中为每个图像添加一个字段,这意味着"我的缩略图已准备好,所以请将我包括在画廊中".

当您收到图库请求时,使用数据库字段对图像组进行切片和切块,然后生成一段HTML,该HTML引用相应的缩略图和图像路径.


编辑: 当您需要处理大量请求时,Aaron F所说的内容非常重要.对图像/ sql数据进行分区是实现可伸缩性的良好途径.您需要查看应用程序中的访问模式,以确定分区所在的位置.您可以更快做的事情是缓存为库创建的HTML,以减少SQL负载.