1

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

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

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

  1. 上传图片时将图片的所有信息保存到数据库中。
  2. 使用 PHP 函数浏览文件夹,并从每个图像中获取信息。

我有类似文件管理器类的东西,它可以对服务器端的文件进行所有操作,比如 deleteDir、deleteFile、countItems、getFileSize、getDirSize。而且很容易再写一个检查图像的类,然后我可以上传图像,并直接从文件夹中获取它们的信息,而不需要关系数据库。

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

什么会更快,第一个或第二个解决方案?可以说该网站获得了大量流量。如果我希望它更快,而不是对服务器施加太大压力,那么哪种解决方案会更好?

4

4 回答 4

3

实际上,我遇到了像您这样的情况,这是我的解决方案:

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

为什么?

我测试了两种方法:

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

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

结果是:

从数据库中获取图像信息越来越快。

最后但并非最不重要的:

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

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

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

祝你好运。

于 2012-10-18T02:46:45.387 回答
0

将数据存储在不同的地方会导致维护问题。我只会序列化每个文件夹中图像的元数据并将其转储到那里的文件中。如果对文件使用 gzip 压缩,检索和存储应该非常快。

于 2012-10-18T02:32:28.423 回答
0

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

于 2012-10-17T22:51:38.497 回答
0

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

重做事情总是要付出代价的,尤其是如果它一直发生的话

于 2012-10-17T22:48:47.707 回答