3

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

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

除了对于一组值似乎有很多开销(创建整个表并维护它等)......基本上,我的解决方案听起来像是将一个方形钉塞进一个圆形槽中。

粗略浏览一下 drupal 数据库什么也没有,我猜他们使用服务器本身的配置文件?如果是这种情况,我不知道 Web 应用程序如何读取 .cfg 文件(例如)中保存的值,也不知道这样的应用程序如何将信息保存到文件中。如果你以前解决过这个问题,我会很感激你的洞察力。

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

提前致谢!

4

4 回答 4

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. 选项
  2. 价值

其中option可能是“excluded_modules”,其对应value的是“inventory,user_cat”。不过老实说,这种方法有点草率,将来可能会给您带来一些挫败感。

于 2010-02-03T05:12:27.067 回答
2

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

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

除了存储数据和围绕它的许多基础设施外,数据库还有很多功能。如果您将数据库用于您的配置,您可以使用您拥有的任何机制进行数据库部署/备份,而几乎没有额外的成本。您还可以利用内置的权限机制以及任何可用的撤消功能。

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

于 2010-02-03T05:25:08.717 回答
1

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

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

于 2010-02-03T05:14:58.247 回答
1

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

于 2010-02-03T10:10:20.510 回答