my_config.ini vs my_config.php
在工作中,我们使用一个.ini文件来设置变量,然后再调用框架的其余部分(我想它会my_config.ini vs my_config.php,php,configuration-files,ini,Php,Configuration Files,Ini,在工作中,我们使用一个.ini文件来设置变量,然后再调用框架的其余部分(我想它会 function getConfigVars(){ //read my_config.ini file .... //call framework } 我一直想知道这样做是否有好处 在我看来,您必须编写访问规则来阻止人们从web上查看它,php必须解析并理解它 那么,为什么要使用my_config.ini而不是my_config.php呢?设置后,似乎没有人应该触摸它,而且调用变量并让ID
function getConfigVars(){
//read my_config.ini file
....
//call framework
}
我一直想知道这样做是否有好处
在我看来,您必须编写访问规则来阻止人们从web上查看它,php必须解析并理解它
那么,为什么要使用my_config.ini而不是my_config.php呢?设置后,似乎没有人应该触摸它,而且调用变量并让IDE自动完成文本似乎更方便,无论您在哪里使用ini变量/解析错误。非程序员可能更容易修改fy配置变量…如果您的工作场所需要的话 我发现仔细放置
可以阻止它显示,而parse_ini_file()仍将从文件中获取相关数据
不过,保护它的最佳方法是将其置于docroot之上,并在服务器设置中拒绝对*.ini的访问。可以肯定,您的问题提出了一个公平的观点 以下几点有利于
.ini
文件:
- 将该文件与另一种语言一起使用。如果您想要一个Perl、Python、Ruby等脚本,请使用该语言执行一些特别容易的操作,并且需要访问项目设置,那么如果您将设置存储在PHP文件中,您可能会运气不佳
- 人工编辑数据。尽管您在问题中忽略了它,但不管是否有意图,很可能最终有人会插入其中,而它可能不是技术人员。INI格式比PHP代码要安全得多,即使它只是一堆变量声明
- 更新设置。我认为创建一个新的INI文件比编写一个PHP文件要容易得多。不过,这很主观,但值得一提
- 设置变量之间的关系。使用INI文件为设置提供一个层次结构是相当容易/直观的。虽然使用PHP也可以做到这一点,但如果您试图使用深度嵌套的关联数组来存储信息,它就不那么整洁,而且会变得难看
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.db.adapter = "PDO_SQLITE"
resources.db.params.dbname = APPLICATION_PATH "/../data/db/users.db"
resources.view[] =
[staging : production]
[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.db.params.dbname = APPLICATION_PATH "/../data/db/users-testing.db"
[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.db.params.dbname = APPLICATION_PATH "/../data/db/users-dev.db
对于那些想知道使用INI文件(必须解析)和PHP文件(可以由PHP缓存)之间是否存在性能差异的人来说,使用多个数据集来运行代码非常容易字体是的,有差异,但差异太小,不重要 我的基准场景是一个包含20个键/值对的
config.ini
文件和一个包含20个键/值对的config.php
文件,这些键/值对都是按定义编写的。在Ubuntu Linux 13.04上,php版本是5.4.9
key1 = value1
...
key20 = value20
vs
APC PHP缓存的结果:
ini: Requests per second: 2660.89 [#/sec] (mean)
php: Requests per second: 2642.28 [#/sec] (mean)
ini: Requests per second: 3294.47 [#/sec] (mean)
php: Requests per second: 3307.89 [#/sec] (mean)
我多次运行测试,当然每次测试的数字都会有所不同,但一致的意见是:
config.ini
在不使用PHP缓存的情况下要快一点,config.PHP
在使用PHP缓存的情况下要快一点。但是差异太小了,不应该基于性能来决定。已经有了n其他几个与此问题类似的问题,例如,这里有一些相关信息:我希望我们有多个配置…我总是因为不小心用root/toor提交配置文件而遇到麻烦,因为它比在本地创建100个不同的数据库用户更方便。正如您所看到的,使用INI配置文件可以轻松地继承,但同时允许您根据当前
<?php
require_once "config.php";
ini: Requests per second: 2660.89 [#/sec] (mean)
php: Requests per second: 2642.28 [#/sec] (mean)
ini: Requests per second: 3294.47 [#/sec] (mean)
php: Requests per second: 3307.89 [#/sec] (mean)