将图像信息保存在数据库中?

时间:2012-10-17 22:41:39

标签: php file-upload relational-database

让我们说我正在使用PHP构建一个图库,用户可以上传他们的照片。 每个用户在服务器端都有1个文件夹,其中包含所有图像。

现在我要说我需要在浏览器中提供信息。用户可以浏览图像,并且应该看到很多关于它们的信息,如图像大小,图像尺寸,甚至EXIF信息等。

我可以用两种方式做到这一点:

  1. 上传图片时,将有关图片的所有信息保存到数据库中。
  2. 使用PHP函数浏览文件夹,并从每个图像中获取信息。
  3. 我有类似文件管理器类的东西,它可以对服务器端的文件进行所有操作,比如deleteDir,deleteFile,countItems,getFileSize,getDirSize。 并且很容易只编写一个可以检查图像的类,然后我就可以上传图像,直接从文件夹中获取信息而无需关系数据库。

    现在你们都在等待的问题是:......:)

    什么是更快,第一或第二解决方案?让我们说网站获得了大量的流量。 如果我希望它快速,而不是给服务器压力太大,那么什么解决方案会更好?

4 个答案:

答案 0 :(得分:3)

实际上,我的情况和你的情况一样,这是我的解决方案:

  

上传图片时,将有关图片的所有信息保存到数据库中。

为什么?

我测试了两种方式:

  

使用php获取 1000 次的图像信息。

     

从数据库获取 1000 次的图像信息。

结果是:

  

从数据库获取图像信息的速度越来越快。

最后但并非最不重要:

  

如果你想做一个图像信息分析,你会怎么做?

如果您将所有信息保存在数据库中,您可以轻松获取并分析它们,但如果您使用php获取信息?它难以成像。

因此,在上传图片时,只需将有关图片的所有信息保存到数据库中。

祝你好运。

答案 1 :(得分:0)

将其存储在数据库中一次 从数据库中读取数据并将其存储在缓存中,

如果它一直发生,重做的东西总是花费

答案 2 :(得分:0)

根据这些图片的大小,您可能希望在人们浏览时显示缩略图而不是原始缩略图,这意味着您需要生成缩略图。我会在上传时生成缩略图并获取所有文件信息。然后将文件信息保存在数据库中,并将原始文件和缩略图放在文件系统中。如果你获得了大量的流量,也可以在那里抛出memcache。

答案 3 :(得分:0)

将数据存储在不同的位置有一种方法可能会造成维护问题。我只是序列化每个文件夹中图像的元数据并将其转储到那里的文件中。如果对文件使用gzip压缩,则检索和存储应该非常快。