在用 Zend Framework 構(gòu)建應(yīng)用程序時(shí),,我們通常以 index.php 作為入口文件,,并在其中創(chuàng)建 Zend_Application 對象及完成配置,例如讀入名為 Application.ini 的配置文件,。
然而每次請求都讀入并解析 Application.ini 配置文件,,顯然也是不小的開銷。 翻查 Zend_Application::_loadConfig() 函數(shù),,我們發(fā)現(xiàn)參數(shù)中允許傳入數(shù)組,,這就啟發(fā)我們可以用簡單的方法來避免每次都解析 ini 配置。 在 index 中 : <?php// ...... // Application.ini.inc 緩存的配置文件defined('CONFIG_INC') || define('CONFIG_INC', PROJECT_ROOT . '/library/Kbs/Config/Application.ini.inc'); // 如果沒有緩存,,我們就使用默認(rèn)配置文件$configFile = CONFIG_INC;$noConfigCache = false;if (false == is_file(CONFIG_INC)) { $configFile = PROJECT_ROOT . '/library/Kbs/Config/Application.ini'; $noConfigCache = true;} // Zend_Applicationrequire_once 'Zend/Application.php'; // 創(chuàng)建 application$application = new Zend_Application( APPLICATION_ENV, $configFile); // 如果緩存文件不存在,,我們創(chuàng)建它// 只用于 production 環(huán)境if ($noConfigCache and ('production' == APPLICATION_ENV)) { $configs = '<?php' . PHP_EOL . 'return ' . var_export($application->getOptions(), true) . PHP_EOL . '?>'; file_put_contents(CONFIG_INC, $configs);} // ......?>這樣當(dāng)應(yīng)用程序檢測到 Application.ini.inc 緩存文件存在時(shí),,就會(huì)自動(dòng)載入,并讀取經(jīng)過解析的數(shù)組形式的配置,。 |
|