【问题标题】:php:Store image into Mysql blob, Good or bad?php:将图像存储到Mysql blob,好还是坏?
【发布时间】:2011-09-12 22:14:10
【问题描述】:

这个问题让我很困惑,所以我想我应该听听专家的声音!

将图像上传到文件夹并保存到 mysql 的链接更好,还是更好地将 img 本身上传到 blob mysql 字段?

非常感谢

【问题讨论】:

  • 我认为将图像上传到文件夹并保存到 mysql 的链接是一个不错的选择。

标签: php mysql blob


【解决方案1】:

我经常构建系统将图像存储在数据库中,这样做有利有弊。

优点:

  • 您的所有数据都保存在一个地方,如果您迁移您的网站/数据库,图像就会在那里
  • 更容易排序/删除/等...
  • 由于您必须通过 PHP 脚本提供服务,因此您可以在需要时执行其他操作,例如安全性或图像处理(显然您也可以使用平面文件执行此操作,但您必须确保无法绕过安全性将图像保留在公共目录中)。

缺点:

  • 它比从网络服务器提供平面文件作为 PHP 脚本需要检索它要慢,而 MySQL 需要返回数据。
  • 您的数据库会很快变大,而且并不是所有的网络主机都对此很友好。
  • 文件系统在平面文件存储和检索方面速度更快,这正是文件系统的设计目的。

【讨论】:

    【解决方案2】:

    不好。您的网络服务器在管理到期标头和直接从文件系统加载文件方面做得更好。使用文件系统的吞吐量会更高。这是它的设计目的,利用它。

    SQL 数据库是为关系数据而非图像而设计的。您只是在不必要地加载数据库。改为存储路径/图像名称。

    【讨论】:

    • 你说的对,我的朋友,但你打算如何保护文件系统中的图像文件?
    • 保护他们?我假设您的服务器不会受到损害,或者您手头的问题比您的图像要困难得多。目录权限可以让您的应用程序访问该目录,但不允许共享主机上的其他用户访问。
    • @Xorlev - 这是不正确的,如果站点位于共享服务器上,PHP 以 web 用户身份运行,没有 chroots,这很常见,那么任何其他用户的 PHP 脚本都可以访问路径中的文件。如果是这种情况,那么数据的存储方式并不重要,因为恶意用户可能会从您的脚本中提取 mysql 用户和密码。简而言之,如果需要安全,请不要使用共享服务器。
    • 任何值得称道的共享主机都使用 PHP suExec。如果不是,您可能不应该使用它们。
    • 另外,如果你最终得到一个包含太多图像的目录怎么办? - 比如说数十亿张图片?
    【解决方案3】:

    如果您的应用程序很大,即您必须重复显示大量/大小的图像,那么您应该采用第一种方法(仅将图像路径存储在数据库中,并将实际图像存储在文件系统中)。这将减少显示图像的处理时间,而且消耗更少的资源。其次,如果您的应用程序需要较少数量的图像,那么您可以将它们直接存储在数据库中。这样就可以轻松地进行备份并将应用程序移植到另一个操作系统。

    【讨论】:

      猜你喜欢
      • 2011-01-14
      • 2010-09-24
      • 2017-01-27
      • 2023-03-19
      • 2017-08-16
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      • 2010-11-23
      相关资源
      最近更新 更多