my_config.ini与my_config.php

2022-08-31 00:26:39

在工作中,我们使用.ini文件在调用框架的其余部分之前设置变量(我认为它可以

function getConfigVars(){
    //read my_config.ini file
    ....
    //call framework
}

我一直想知道这样做是否有好处。

在我看来,你必须编写访问规则来阻止人们从网上查看它,php必须解析它并理解它。

那么,为什么要使用my_config.ini而不是my_config.php呢?它不像任何人应该在设置后触摸它,并且似乎更方便的是调用变量,并且能够让你的IDE自动完成文本,无论你在哪里使用ini变量/解析它的错误。


答案 1

对于那些因为想知道使用必须解析的INI文件和简单包含的PHP文件(并且可以由PHP缓存)之间是否存在任何性能差异的人来说:是的,存在差异,但它们非常小,这并不重要。

我的基准测试方案是一个包含 20 个键/值对的文件和一个具有相同 20 个键/值对的文件,这些键/值对按定义编写。PHP 版本是 Ubuntu Linux 13.04 上的 5.4.9。config.iniconfig.php

key1 = value1
...
key20 = value20

与。

<?php
define("key1", "value1");
...
define("key2", "value20");

两个测试脚本,包括配置:

<?php
$CONF = parse_ini_file("config.ini");

与。

<?php
require_once "config.php";

我用.ab -c 25 -n 10000

没有 PHP 缓存的结果:

ini: Requests per second:    2660.89 [#/sec] (mean)
php: Requests per second:    2642.28 [#/sec] (mean)

使用 APC PHP 缓存的结果:

ini: Requests per second:    3294.47 [#/sec] (mean)
php: Requests per second:    3307.89 [#/sec] (mean)

我多次运行测试,自然数字每次都会有所不同,但共识是:当不使用PHP缓存时,速度会快一点,使用PHP缓存时会快一点。但差异如此之小,以至于决策不应基于性能。config.iniconfig.php


答案 2

可以肯定的是,你的问题提出了一个公平的观点。

支持文件的几点:.ini

  • 将文件与其他语言一起使用。如果你想让一个Perl,Python,Ruby等脚本做一些特别容易用该语言做的事情,并且需要访问项目设置,如果你将设置存储在PHP文件中,你会不走运。

  • 人工编辑数据。虽然您在问题中驳回了它,但意图与否,很可能有人最终可能会在那里戳进去,它可能不是一个技术人员。INI格式比PHP代码可怕得多,即使它只是一堆变量声明

  • 更新设置。我认为创建一个新的INI文件比编写PHP文件要容易得多。然而,这是非常主观的,但值得一提。

  • 设置变量之间的关系。使用INI文件为设置提供层次结构是相当简单/直观的。虽然这在PHP中也是可能的,但它并不那么整洁,如果你试图做深度嵌套的关联数组来存储信息,它可能会变得难看。

除此之外,“必须保护它免受Web访问”对INI的打击在大多数情况下都无关紧要,因为大多数PHP项目(至少是我所在的项目)将相当多的代码从根文件夹带走,并且设置通常在那里。


推荐