在PHP中存储配置数据的最快方法是什么,以便可以轻松更改(通过PHP)?首先我考虑过使用config.php文件,但我不能用PHP编辑它,至少不是很简单?然后我考虑使用XML文件,但是为每个HTTP请求解析它们是压倒性的。所以,我想到了INI文件,但后来我认为INI文件仅限于int / string值。最后,我得出的结论是JSON编码文件是最好的:
$config['database']['host'] = ...;
$config['another']['something'] = ...;
...
json_encode($config);
由于JSON可以存储数组,因此我可以用它创建非常复杂的配置,并且它比INI文件解析得更快。
我的问题:我错过了什么或有更好的方法吗?
答案 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:
答案 2 :(得分:2)
我存储配置的方法是将一些变量放在外部.php文件中,然后当我想使用这些文件时,我说:
<?php include("fileName"); ?>
这将允许您跨多个页面共享配置信息。但是,我不确定这是最有效的方法,但它对我来说似乎最简单。
答案 3 :(得分:2)
虽然它很可能对你所追求的东西有些过分,但我倾向于使用PHP类将配置数据存储在数据库中以控制对其中名称/值对的更改。 (即:本课程以外没有直接的DB访问权。)
当调用PHP配置类来更改值时,这会写出一个标准的PHP包含文件,其中定义了所有不同的值。
因此,在读取配置数据时没有加载时间性能,并且可以通过CMS模块在数据库中更改所有配置数据。
答案 4 :(得分:0)
答案 5 :(得分:0)
我使用带有名为config或settings的表的数据库。该表有两列:
name [varchar(255)]
value [varchar(255)]
这样可以轻松存储int,float和short字符串。
然后我创建两个函数,GetSetting和SetSetting。它们分别存储一行并检索一行。我发现这极大地简化了值的存储。
答案 6 :(得分:0)
如果您使用require而不是include for config文件,您将获得一点性能。如果您知道配置文件将始终存在,或者您有自己的机制来检查它是否存在,则可以执行此操作。