Bookmark and Share

Lee's 程序人生

HTML CSS Javascript XML AJAX ATLAS C# C++ 数据结构 软件工程 设计模式 asp.net Java 数字图象处理 Sql 数据库
  博客园  :: 首页  :: 新随笔  :: 联系 :: 管理

在 Zend Framework 中缓存你的配置文件 Application.ini

Posted on 2010-02-05 19:53  analyzer  阅读(863)  评论(0编辑  收藏  举报
在用 Zend Framework 构建应用程序时,我们通常以 index.php 作为入口文件,并在其中创建 Zend_Application 对象及完成配置,例如读入名为 Application.ini 的配置文件。

 

然而每次请求都读入并解析 Application.ini 配置文件,显然也是不小的开销。

 

翻查 Zend_Application::_loadConfig() 函数,我们发现参数中允许传入数组,这就启发我们可以用简单的方法来避免每次都解析 ini 配置。

 

在 index 中 :

 

<?php
// ......
 
// Application.ini.inc 缓存的配置文件
defined('CONFIG_INC')
    || define('CONFIG_INC',
              PROJECT_ROOT . '/library/Kbs/Config/Application.ini.inc');
 
// 如果没有缓存,我们就使用默认配置文件
$configFile = CONFIG_INC;
$noConfigCache = false;
if (false == is_file(CONFIG_INC)) {
    $configFile = PROJECT_ROOT . '/library/Kbs/Config/Application.ini';
    $noConfigCache = true;
}
 
// Zend_Application
require_once 'Zend/Application.php';
 
// 创建 application
$application = new Zend_Application(
    APPLICATION_ENV,
    $configFile
);
 
// 如果缓存文件不存在,我们创建它
// 只用于 production 环境
if ($noConfigCache and ('production' == APPLICATION_ENV)) {
    $configs = '<?php' . PHP_EOL
             . 'return '
             . var_export($application->getOptions(), true) . PHP_EOL
             . '?>';
    file_put_contents(CONFIG_INC, $configs);
}
 
// ......
?>

 

这样当应用程序检测到 Application.ini.inc 缓存文件存在时,就会自动载入,并读取经过解析的数组形式的配置。

 

转自:http://kbs.kimbs.cn/blog/list/post/16/title/cache-application-configuration-ini-in-zend-framework 

我要啦免费统计