2011-12-02 52 views
1

我建立一个网站,其配置数据由php file举行,变量不超过15行的配置文件中的表演。差异在PHP

一切运作良好,到目前为止,但我现在面临的定义更多的变量,并研究了一点,我发现一个article about Application Configuration in PHP,其结论指出php files正在分析他们是如何扩展当wost选项(需要Databases是更好的选择)。

什么是决定使用配置文件的格式时,最值得推荐的选择吗?

+0

“规模”在哪个方向?文件中有更多条目?更多需要配置的服务器? – deceze

+0

“缩放”与文件中的更多条目。 –

回答

3

对不起,什么?!分析时,他们如何扩展(数据库是更好的选择)

PHP文件是wost选项。

这只是很奇怪,因为你可以很好地扩展PHP - 只需设置另一台服务器,就是这样,你已经扩展了你的PHP两次。

也请记住,有指令优化,将继续解析文件内容在内存中。

而缩放数据库火箭科学。扩展数据库是一个棘手的过程,涉及良好的数据库内部和操作系统知识。

所以我不会参考那篇文章。

PS:看了文章:

当脚本运行时,结果是平均约0.052640马克,使这个迄今为止最慢的方法至今。

我无法实现只是实例变量如何可以比从数据库中读取(其包括连接开销,从表开销读取,发送数据的开销和到底同一实例变量处理)比较慢。根据定义,X不能超过X + Y

+0

是的,我真的觉得和你一样。这就是我选择php文件来保存配置变量的原因。无论如何,当文章谈论每种方法如何“缩放”时,它们指的是在增加变量数量时它的行为方式,而不是在设置更多应用程序实例时。那是你的意思吗? –

+1

我能想到的唯一原因是PHP数组最慢的方法是解析大型PHP文件和数组。为了解决这个问题,请使用opcode cacher,以便它不需要每次都解析配置,或解析配置,序列化并在可能的情况下使用序列化版本。 – drew010

2

在我看来,如果你可以存储在数据库中的配置,并在内存中缓存的结果,表现应该是非常非常好。

但是,如果配置存储在数据库中,它需要大量的加入得到它,没有缓存,性能可能会比使用PHP文件最差。

在另一方面,如果你存储在返回数组中的PHP文件配置:

//config.php 
return array(
    'configitem1' => 'xyz', 
) 

//then use 
$config = require_once('config.php); 

的表现应该不会太差。显然,每个请求都会有磁盘IO,所以如果您需要大量文件,那么您可能会遇到一些性能问题。如果需要调用大量文件,可以将结果缓存到memcached或APC中以消除磁盘IO性能问题。

最后,您可以使用XML或YAML文件。这些将是性能最低的,因为您需要加载和读取文件,然后解析它。

就个人而言,我认为将是存储在应用程序的用户可能需要修改它的数据库配置。例如:

  • 换页自定义网址。
  • 应用程序设置,例如用户是否可以创建新帐户
  • 标志,例如应用程序是否处于维护模式。

总会有配置需要在文件存储:

  • 数据库连接参数
  • 缓存设置(即memcached的设置)。

但是,存储在文件中的配置可以缓存在memcached或APC中,所以您的应用程序仍应该是高性能的。

所以我的2美分:

  • 使用数据库来存储配置,如果用户需要能够修改。
  • 将其他配置作为数组存储在PHP文件中并使用缓存。
  • 使用YAML和XML作为最后的手段。
0

这是为什么文章是错误的:

Type First Run Second Run 
Ini File 0.000421 0.021381 
XML File 0.000717 0.
PHP File 0.000450 0.052640 
Database 0.005533 0.014184 

说“第一次运行”和“第二轮”清楚地表明,这些都不是平均结果。作者只是跑了两次,没有一个真正的分析器,并发布了一个毫无意义的数字。