19

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

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

4

5 回答 5

26

根据从网络档案中检索到的这篇旧博客文章。

从最快到最慢:

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

编辑(2012 年 8 月 2 日)

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

于 2010-01-22T21:01:15.610 回答
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);
}

然后 ini 文件被 APC 缓存。用一个简单的 microtime 基准测试,这也比直接读取 ini 文件更快。

于 2011-12-26T12:29:25.107 回答
7

我一直怀疑 parse_ini_file 非常慢,而在 PHP 文件中将变量存储在数组中会更快。但是这篇 2004 年的文章另有说明:

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

我不会完全相信这一点,直到我自己测试一下,当我有时间去做的时候。但是这篇文章(和杂志)看起来足够可靠,可以认真对待。

于 2010-01-22T20:53:16.283 回答
0

parse_ini_file内置函数是用 C 实现的。这使得它非常快。

于 2010-01-22T21:00:45.113 回答
-4

如果你不缓存 ini 文件,你会快得多。所有专家都可以说这是真的。

于 2010-01-22T20:56:48.930 回答