Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php:将图像存储到Mysql blob中,好还是坏?_Php_Mysql_Blob - Fatal编程技术网

php:将图像存储到Mysql blob中,好还是坏?

php:将图像存储到Mysql blob中,好还是坏?,php,mysql,blob,Php,Mysql,Blob,这个问题让我困惑,所以我想我应该听听专家的声音 将图片上传到文件夹并将链接保存到mysql更好,还是将img本身上传到blob mysql字段更好 非常感谢我经常构建系统来存储数据库中的图像,这样做有优点也有缺点 优点: 你所有的数据都保存在一个地方,如果你迁移你的网站/数据库,图像就会在那里 更容易排序/删除/等等 由于您必须通过PHP脚本提供服务,因此如果需要,您可以执行其他操作,如安全性或图像处理(显然,您也可以使用平面文件来执行此操作,但您必须确保不能通过将图像保留在公共目录中来绕过安

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

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


非常感谢

我经常构建系统来存储数据库中的图像,这样做有优点也有缺点

优点:

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

  • 它比从Web服务器提供平面文件慢,因为PHP脚本需要检索平面文件,MySQL需要返回数据
  • 您的数据库将很快变大,并不是所有的web主机都会对这一点太过友好
  • 文件系统对于平面文件的存储和检索速度更快,因为这正是文件系统设计的目的

    • 坏。您的Web服务器在管理到期头和直接从文件系统加载文件方面做得更好。使用文件系统将获得更高的吞吐量。这就是它的设计目的,利用它


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

      如果应用程序很大,即必须重复显示大量图像,则应使用第一种方法(仅在数据库中存储图像路径,在文件系统中存储实际图像)。这将减少显示图像的处理时间,并且消耗更少的资源。其次,若您的应用程序需要较少数量的图像,那个么您可以将它们直接存储在数据库中。通过这种方式,备份和将应用程序移植到另一个操作系统变得很容易。

      我认为将图像上载到文件夹并保存到mysql的链接是一个不错的选择。你说的没错,我的朋友,但是你计划如何保护文件系统中的图像文件?保护它们?我假设您的服务器不会受到损害,或者您手头的问题比您的图像要困难得多。目录权限可以让您的应用程序访问该目录,但不能让共享主机上的其他用户访问。@Xorlev-这不是真的,如果该站点位于共享服务器上,PHP作为webuser运行,而没有chroots(这是很常见的),那么任何其他用户的PHP脚本都可以访问路径中的文件。如果是这种情况,那么数据的存储方式就无关紧要了,因为恶意用户可能会从脚本中提取mysql用户和密码。简而言之,如果需要安全性,不要使用共享服务器。任何值得使用的共享主机都使用PHPSUEXEC。如果没有,您可能不应该使用它们。另外,如果您最终得到一个包含太多图像的目录,该怎么办比如说几十亿张图片?