使用数据库存储配置而不是配置文件

时间:2010-12-13 23:57:59

标签: php sql mysql database configuration

不幸的是,搜索这种材料会给我带来很多噪音,所以我想知道是否有人知道如果有人希望学习如何使用数据库来存储网站配置信息而不是文件,那么这个资源是否很好。< / p>

我想我感兴趣的一些观点是: 1)如何存储数据。像e107一样的阵列?每个可配置的单独行? 2)如何获取配置数据。全球阵列?

5 个答案:

答案 0 :(得分:7)

请考虑以下事项:

  • 除非您对其进行硬编码,否则某些配置必须存储在配置文件中,特别是如何连接到数据库
  • 数据库不善于存储某些类型的配置数据 - 高度结构化的东西,或者具有不可预测或可变结构的东西 - 你最终可能会得到一个没有多大意义的架构
  • 在SCM系统中存储配置文件要容易得多
  • 您可以在升级时简单地替换配置文件,如果需要返回,可以将其回滚。尝试使用数据库表吗?即使在最好的情况下,也更难。

我通常会选择配置文件,用于小型Web应用程序。

一旦你拥有一个涉及网络和基础设施的基础设施。非Web服务器,将配置放在集中可访问的位置成为一个优势。这不一定是SQL数据库,有些人使用LDAP甚至是DNS。

答案 1 :(得分:2)

我会在教堂里发誓,谦卑地指出一个人可以做到这两点:)

您可以将配置参数存储在数据库中,然后生成保存参数时所需的任何配置文件。

这是一种冗余形式,但它也具有以下优点:

  1. 您现在可以将配置参数与普通查询相结合。
  2. 对于DB中的每个参数,您可以添加默认值,这意味着您可以轻松地“重置”它
  3. 您可以选择更轻松地版本处理配置(甚至跟踪更改)。
  4. 您甚至可以构建一个Web表单来修改配置(现在您不需要直接访问Web服务器)。
  5. 在Web服务器文件系统上不再显示敏感数据。

答案 2 :(得分:0)

  1. 每行一行,类似于EAV。

  2. 当然,全局数组或对象听起来不错。

答案 3 :(得分:0)

您的方法对于用户通过网络界面进行更改的设置非常常见。

您可能会看看WordPress在数据库中存储配置的方式。

答案 4 :(得分:0)

这样的事情对你有用:

CREATE TABLE `config` (
  `prop` varchar(100) DEFAULT NULL,
  `value` mediumtext,
  UNIQUE KEY `lookup` (`lookup`)
) ENGINE=InnoDB

将您的密钥放入prop,并将配置值转换为值。