【问题标题】:Store PHP settings data as array or MySQL database?将 PHP 设置数据存储为数组或 MySQL 数据库?
【发布时间】:2011-01-26 14:33:40
【问题描述】:

我正在开发一个 Wordpress 主题,它需要进行一些设置。到目前为止,我将它们保存在数据库中,但我也希望它们是可移植的。出于这个原因,我还将数据作为数组保存到了 settings.php 文件中。现在我正在考虑完全不使用数据库以避免存储两次。

关于此的一些问题

  • 与 MySQL 数据库相比,将数据存储在包含的 PHP 文件中的数组中有什么不好的地方吗? (只是设置,不需要排序,不需要关系)
  • 哪个最快?包含一个带有数组的 php 文件,或者从数据库中加载数据?
  • 对此还有其他想法吗?

我对我的问题的最完整答案投了检查票。简短的答案可能会获得投票。

【问题讨论】:

    标签: mysql database arrays settings wordpress-theming


    【解决方案1】:

    我是一个非常铁杆的数据库人,我会说他们不需要在数据库中。

    线索在你的陈述“这只是设置,不需要排序,不需要关系”和“我也希望它们是可移植的”

    我的主要论点是简单。 PHP 非常擅长使用数组,它喜欢它们,理解它们,可以轻松地从文件中加载它们并将它们保存到文件中。因此,即使您确实不时从应用程序更改它们,更新和保存数组也没什么大不了的。因此,如果您使用数组,您将使用 PHP 的原生特性,并为此特性创建架构简单

    因此,对于可移植性,最便携的数据库是您不使用的数据库。当你有使用原生 PHP 数据格式的简单性时,你就不需要数据库了(至少不需要这个)

    为了速度,无论如何,在 Linux 上 PHP 可以打开一个文件并读取它,这比它往返数据库的速度要快。

    反对数组解决方案的唯一剩下的论点是与其他数据的交互,但你说没有。

    所以,作为一个数据库专家,我想说不要仅仅因为数据库就在那里就使用它。数据库对于结构化数据来说是不可思议的,如果这只是一个简单的设置列表,它就不是结构化数据。 db 可以,文件系统可以,选择更简单的。

    【讨论】:

      【解决方案2】:

      如果您希望它是可移植的,请不要为您的 Wordpress-Theme-Settings 创建基于文件的存储。某些网站的主题文件夹可能是只读的。

      对于初始设置,可以从几乎所有基于文件的内容中读取设置。后来它最好的存储(和备份)在数据库中。

      如果您将内容存储在文件中,请使用基于 ini-style 的文件,因为 PHP 为您免费提供 API。如果您的选项不受限制,通常只会将事物更好地存储在数组或serialized 中。

      不要太在意性能,只需将wordpress options api 用作最佳实践即可。

      【讨论】:

      • 那个东西很有趣,而且看起来不错。你能告诉我为什么 ini 样式比数组样式更好吗?是为了好看吗?
      • 没有“硬”参数,更多的是个人参数:ini 文件本身更“专注”于某种配置;评论一些东西感觉更自然(至少对我来说);更好的选项分组。我确定我忘记了什么;-)
      【解决方案3】:

      如果您担心可移植性,您可能有兴趣使用 ODBC 或 PHP Data Objects

      至于哪个最快,我不是专家,但设置文件只涉及读取文本文件并解析它。数据库选项通常会导致 TCP 连接(除非您使用 mysqlite,如果您要存储的不仅仅是文件路径和数据库名称,我建议您使用它。

      问候,

      【讨论】:

        【解决方案4】:

        如果您希望通过网站本身配置设置,则将它们放在文件中的主要问题。如果没有,那么在代码中包含它们就不用担心了。

        【讨论】:

        • 如果它应该可以在网站上配置呢?我更改设置后保存文件。
        • @Jens:我认为这没有问题。只需实施它,然后继续!
        • 有人告诉我,如果主题文件夹是只读的,那么仅使用文件保存设置可能会出现问题。
        • @Jens Törnell:动态编辑 PHP 并不是一件容易的事。并且可能是不安全的,因为该文件需要可由网站写入。如果您要对数据库连接数据以外的任何内容进行动态更改,那么我建议将它们存储在数据库中。
        猜你喜欢
        • 2013-08-14
        • 2010-12-19
        • 1970-01-01
        • 2014-06-01
        • 2012-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多