在PHP中存储易于编辑的配置数据的最快方法?

时间:2010-01-06 19:50:03

标签: php performance file config

在PHP中存储配置数据的最快方法是什么,以便可以轻松更改(通过PHP)?首先我考虑过使用config.php文件,但我不能用PHP编辑它,至少不是很简单?然后我考虑使用XML文件,但是为每个HTTP请求解析它们是压倒性的。所以,我想到了INI文件,但后来我认为INI文件仅限于int / string值。最后,我得出的结论是JSON编码文件是最好的:

$config['database']['host'] = ...;
$config['another']['something'] = ...;
...
json_encode($config);

由于JSON可以存储数组,因此我可以用它创建非常复杂的配置,并且它比INI文件解析得更快。

我的问题:我错过了什么或有更好的方法吗?

7 个答案:

答案 0 :(得分:37)

Serialize是比JSON更好的存储PHP变量的选项。

我喜欢使用var_export来保存配置文件,并使用include来加载配置信息。这样可以轻松地以编程方式保存配置数据并使数据也易于读取/写入:

的config.php:

return array(
 'var1'=> 'value1',
 'var2'=> 'value2',
);

test.php的:

$config = include 'config.php';
$config['var2']= 'value3';
file_put_contents('config.php', '<?php return ' . var_export($config, true) . ';');

更新后的config.php现在包含以下内容:

return array(
 'var1'=> 'value1',
 'var2'=> 'value3',
);

答案 1 :(得分:2)

你应该使用序列化而不是json_encode:

http://docs.php.net/serialize

答案 2 :(得分:2)

我存储配置的方法是将一些变量放在外部.php文件中,然后当我想使用这些文件时,我说:

<?php include("fileName"); ?>

这将允许您跨多个页面共享配置信息。但是,我不确定这是最有效的方法,但它对我来说似乎最简单。

答案 3 :(得分:2)

虽然它很可能对你所追求的东西有些过分,但我倾向于使用PHP类将配置数据存储在数据库中以控制对其中名称/值对的更改。 (即:本课程以外没有直接的DB访问权。)

当调用PHP配置类来更改值时,这会写出一个标准的PHP包含文件,其中定义了所有不同的值。

因此,在读取配置数据时没有加载时间性能,并且可以通过CMS模块在数据库中更改所有配置数据。

答案 4 :(得分:0)

我很确定你对int / string值是正确的,是的JSON是一种方式,但序列化和反序列化字符串对于速度优化会更快:

此链接可以帮助您:

http://docs.php.net/serialize

答案 5 :(得分:0)

我使用带有名为config或settings的表的数据库。该表有两列:

name [varchar(255)]
value [varchar(255)]

这样可以轻松存储int,float和short字符串。

然后我创建两个函数,GetSetting和SetSetting。它们分别存储一行并检索一行。我发现这极大地简化了值的存储。

答案 6 :(得分:0)

如果您使用require而不是include for config文件,您将获得一点性能。如果您知道配置文件将始终存在,或者您有自己的机制来检查它是否存在,则可以执行此操作。