Php (Zend Framework>;Zend_Config)如何避免使用.ini或.xml配置?

Php (Zend Framework>;Zend_Config)如何避免使用.ini或.xml配置?,php,zend-framework,Php,Zend Framework,我认为在高流量项目中使用.ini或.xml文件不是一个好主意,因为每个页面加载都会导致解析config.ini或.xml文件 是否有任何方法可以将使用.ini/.xml替换为常规php数组作为配置? 现在php ini看起来是这样的 [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 phpSettings.date.timezone = "Europe/London" includ

我认为在高流量项目中使用.ini或.xml文件不是一个好主意,因为每个页面加载都会导致解析config.ini或.xml文件

是否有任何方法可以将使用.ini/.xml替换为常规php数组作为配置? 现在php ini看起来是这样的

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
phpSettings.date.timezone = "Europe/London"
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = rob
resources.db.params.password = 123456
resources.db.params.dbname = zf-tutorial
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.doctype = "XHTML1_STRICT"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
我想要这样的东西

<?php

$config = array(
    'production' => array(
        ['phpSettings.display_startup_errors'] => 0,
        ['phpSettings.display_errors'] => 0,
    ),
);

更好的方法是缓存解析php.ini的结果。但我认为这实际上不会给您带来任何问题。

是的,您可以使用数组初始化
Zend\u Config
对象的数据;看一看(引用周围的例子#1):

通常情况下,预期用户 将使用其中一个适配器类 例如
Zend\u Config\u Ini
Zend\u Config\u Xml
,但如果配置 数据在PHP数组中可用,一个 只需将数据传递给
Zend_Config
构造函数,以便 利用简单的面向对象 接口


你还应该看一看关于(引用它周围的内容)的示例#2

通常,人们希望使用纯净的水 基于PHP的配置文件。这个 下面的代码说明了如何轻松 这是可以做到的

基本上,首先创建一个包含以下配置的PHP文件:

// config.php
return array(
  ...
  ...
);
然后,从另一个文件中,使用以下配置文件:

$config = new Zend_Config(require 'config.php');

但请注意,这样做,您将无法轻松修改配置,无法将配置写回
.ini
文件,这取决于您的情况,最终可能会(或不会)成为一个问题

可以使用的解决方案是缓存
Zend\u Config
数据:

  • .ini
    文件中读取它
  • 将它存储到一些缓存设备中

  • 对于接下来的页面,从缓存加载它,而不是重新解析
    .ini
    文件

最好至少使用APC或任何操作码缓存来缓存它,Zend_Config处理.ini配置文件的CPU占用量非常大,尤其是在使用toArray()时。

在我看来,缓存解析php.ini是不可能的。我可以缓存序列化数据,但每次都需要取消序列化。“对于下一页,请从缓存加载它,而不是重新解析.ini文件。”-我将缓存数据存储在类似序列化文本的内容中,并且每次都应取消序列化。这不是治疗方法。使用php数组是加速加载配置的唯一方法。是的,我将无法写入配置,但它可以为我的情况。谢谢你的回答。不客气;;;如果您不需要写入配置文件,那么我认为将其存储在
.php
文件中就可以了:-);;;关于缓存和反序列化:它应该比解析
.ini
/
.xml
文件快得多:您将反序列化一个已经存在的对象,而不是从头开始重新创建它(当配置存储在
.php
文件中时就是这样),或者您可以使用Memcached;)这不需要序列化,是吗?它需要序列化:在PHP中,对象不能以它的形式存储:它必须被序列化,以字符串的形式表示——可以存储。