PHP parse_ini_file()性能如何?

Jas*_*vis 18 php ini

我知道有些人将设置存储在.ini文件中并使用parse_ini_file()PHP 获取值.没有运行测试,我对性能感到好奇.

如果设置在ini文件中,您知道操作码缓存是否可以缓存任何此类内容?

Cro*_*zin 25

根据从web档案中检索到的这篇旧博客文章.

从最快到最慢:

  1. 序列化数组
  2. 简单的PHP代码
  3. INI文件
  4. XML文件
  5. YAML文件

编辑(08/02/2012)

如果服务器上有APC或其他加速器,那么普通的PHP文件将是最快的,因为它们只会被解析一次并保存在内存中以供进一步使用.

  • @GordonM:当然,反序列化需要**少量**解释PHP脚本的工作.您只需要非常简单的解析器来读取数据并将其转换为PHP数据结构.另一方面,PHP解释器必须做很多工作:使用更复杂的解析器解析文件,将源代码编译成字节码,运行字节码并返回结果 - 更多,更多的工作. (2认同)

den*_*nis 13

对于问题的其他部分:如果操作码缓存缓存ini文件.在撰写本文时,使用我的PHP 5.3.5版本,APC缓存不会自动执行,但您可以通过添加如下所示的函数来确保APC缓存ini文件并将其用于解析ini文件:

function parse_ini_file_ext ($file, $sections = null) {
    ob_start();
    include $file;
    $str = ob_get_contents();
    ob_end_clean();
    return parse_ini_string($str, $sections);
}
Run Code Online (Sandbox Code Playgroud)

然后ini文件由APC缓存.使用简单的microtime基准测试,这也比直接读取ini文件更快.

  • 我只想指出(我知道这很旧了),但这绕过了INI文件的一个重要安全方面(它们在环境中不包含或执行代码)。通过调用“ include”,您允许(可能)执行代码。这是我更喜欢`ini`文件而不是php文件的原因之一。 (2认同)

Pek*_*ica 7

我一直怀疑parse_ini_file非常慢,并且在PHP文件中将变量存储在数组中的速度更快.但2004年的这篇文章却说不然:

最后,我们测试将配置参数存储在INI文件或PHP文件中作为关联数组.我们发现存储在INI文件中并使用parse_ini_file()比解析PHP文件更快.

我不会完全相信这一点,直到我自己测试一段时间.但文章(和杂志)看起来足够坚固,可以认真对待.

  • 如果你这样做,我会对结果非常感兴趣! (2认同)