CMS config - MySQL or XML?


CMS config - MySQL or XML?

我的CMS将有许多配置值,例如站点名称,标语等 - 每次生成页面时都会读取这些值。当然,这些值将被缓存,持续时间设置为 1-2 小时或类似时间(将在设置更改时重置)。

我应该使用 XML 还是 MySQL 保存这些值?性能虎钳,最好的方法是什么?

称它为传统,但我发现.INI文件对PHP应用程序特别有用。

PHP 有一个内置的 parse_ini_file() 函数,让这变得轻而易举

方便的是,它返回一个数组,您可以使用该数组将多个文件合并为单个$config数组或AppConfig单例类

事实上,PHP 使用 .INI文件来配置自己! 请参阅/etc/php.ini :)


你可以做一些有用的事情,比如

配置/数据库.ini

[development]
host = localhost
user = foo
pass = password123
name = dev_db
[production]
host = localhost
user = sqluser
pass = AJ539jf
name = live_db

true传递给parse_ini_file()中的第二个参数时,PHP 将使用章节标题作为数组键。 输出将如下所示

Array
(
    [db] => Array
        (
            [development] => Array
                (
                    [host] => localhost
                    [user] => foo
                    [pass] => password123
                    [name] => dev_db
                )
            [production] => Array
                (
                    [host] => localhost
                    [user] => sqluser
                    [pass] => AJ539jf
                    [name] => live_db
                )
        )
)

这很棒,因为您可以将所有配置文件签入版本控制,只需使用单行应用程序配置文件或环境变量来确定您的应用程序在哪个环境中运行


另一个答案建议遵守您选择的CMS的配置指南,但是,我发现大多数PHP框架在这方面都错过了标记;特别是在支持不同环境的多种配置时。 编写自己的"扩展"来正确处理应用程序配置通常是我们绕过特定 CMS 的刚性解决方案的第一件事。

使用大型配置数组的另一个好处是,如果您希望其他应用或服务与您的应用交互,它可以轻松编码为 JSON。

我会从

总体上看一下 CMS,并坚持在那里用作约定的任何内容。 没有什么比寻找都出现在某处的配置/设置更糟糕的了,只是为了找到您要查找的配置/设置是隐藏在其他地方的异常。 在这种情况下,任何选择的性能都是最小的。

对我来说,XML 是存储配置的更好方法。它易于读写(通过所有语言),易于被极客以外的人控制,并且易于通过版本控制(SVN,Git)控制。