如何存储Web应用程序的配置设置?

时间:2010-02-03 05:09:21

标签: php metadata config

我有一些网站元数据我想改变...例如,在我的应用程序中,如果系统管理员不想使用网站的“库存”部分,他/她可以将其关闭,它会从主站点消失。

所以我在想,也许我可以在我的数据库中创建一个名为“meta”的表,并在那里插入值(或元组)!然后,如果模块关闭,脚本将更新该行,并将“模块x”设置为0,我会完成它,对吧?

除了它似乎是一个非常大的开销(创建一个整个表,并维护它等)只是为了一组值...基本上,我的解决方案听起来像一个方形挂钩推入一个圆形插槽。

粗略地浏览drupal数据库什么都没产生,我猜他们在服务器上使用配置文件?如果是这种情况,我不确切知道Web应用程序如何读取.cfg文件中的保存值(例如),也不知道这样的应用程序如何将信息保存到文件中。如果你以前解决了这个问题,我会很感激你的见解。

顺便说一句,我主要使用PHP。

提前致谢!

4 个答案:

答案 0 :(得分:2)

我经常看到使用配置数组完成此操作:

$config["admin_email"] = "admin@mydomain.com";
$config["site_name"] = "Bob's Trinket Store";
$config["excluded_modules"] = array("inventory", "user_chat");

之后您可以查看:

if (!in_array("inventory", $config["excluded_modules"])) {
  // include inventory logic
}

当然,这有点倒退。实际上,明确声明包含模块更聪明,而不是消极。然后,您将在项目中引用此config.php以加载并响应不同的配置。

您也可以将其实现为数据库表,至少创建两个字段:

  1. option可能是“excluded_modules”,其对应的value是“inventory,user_cat”。老实说,这种方法有点草率,可能会让你在将来感到沮丧。

答案 1 :(得分:2)

我知道您的问题是“如何从Web应用程序读取/写入服务器上的单独文件”,但我想我会解决您所做的一个假设。将配置存储在数据库中没有任何错误。

我已经看到项目(具有大量流量和良好的正常运行时间 - 以及大量IT保持这种方式= P)将数据存储在数据库中,或多或少如您所述。如果它是一个单独的表,并且你没有完整的疯狂故障转移/分区方案,那么它的开销并不是那么多。

除了存储数据以及围绕它的大量基础设施外,数据库还具有许多功能。如果您使用数据库作为配置,您可以使用任何机制来进行数据库部署/备份,而只需要很少的额外费用。您还可以利用内置权限机制以及任何可用的撤消功能。

编辑: 但是,如果您在每个页面显示上访问该配置,您可能会遇到瓶颈:)所有关于您的设计。一种解决方案是,如果您拥有持久性Web服务,则可以每隔X秒重新扫描一次配置。

答案 2 :(得分:1)

你基本上有两个选择 - 要么把它放在数据库表中,要么放在平面配置文件中(可能是PHP,也许是XML)。对于后者,为了使其可以从页面进行编辑,您必须(1)处理特定于操作系统的特定文件访问问题,(1)每次设置站点时应用适当的文件权限,以及(3)解析和生成PHP / XML代码。使用数据库,您只需要一个简单的查询,所以我肯定会使用它。

对于使用这种方法的大型项目,我知道phpBB确实将其大部分配置存储在数据库中(密码除外,我上次检查过)。

答案 3 :(得分:1)

我更喜欢使用ini文件作为位于public_html文件夹之前的配置。我认为这给了我很多灵活性和分组var,并在必要时为模块创建单独的ini。