php – 使Zend-Framework运行得更快

前端之家收集整理的这篇文章主要介绍了php – 使Zend-Framework运行得更快前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
除了Zend Optimizer之外,Zend-Framwork运行得更快的最佳方法是什么?

如果我没记错的话,在PHP中解析.ini文件需要很长时间.因此我将其缓存(文件在请求期间不会更改)

还有其他方法可以改善ZF的表现吗?

我缓存我的application.ini像这样:

确保您有以下目录(缓存目录):/ application / data / cache

我使用My_Application扩展Zend_Application,参见代码

<?PHP
require_once 'Zend/Application.PHP';

class My_Application extends Zend_Application
{

    /**
     * Flag used when determining if we should cache our configuration.
     */
    protected $_cacheConfig = false;

    /**
     * Our default options which will use File caching
     */
    protected $_cacheOptions = array(
        'frontendType' => 'File','backendType' => 'File','frontendOptions' => array(),'backendOptions' => array()
    );

    /**
     * Constructor
     *
     * Initialize application. Potentially initializes include_paths,PHP
     * settings,and bootstrap class.
     *
     * When $options is an array with a key of configFile,this will tell the
     * class to cache the configuration using the default options or cacheOptions
     * passed in.
     *
     * @param  string                   $environment
     * @param  string|array|Zend_Config $options String path to configuration file,or array/Zend_Config of configuration options
     * @throws Zend_Application_Exception When invalid options are provided
     * @return void
     */
    public function __construct($environment,$options = null)
    {
        if (is_array($options) && isset($options['configFile'])) {
            $this->_cacheConfig = true;

            // First,let's check to see if there are any cache options
            if (isset($options['cacheOptions']))
                $this->_cacheOptions =
                    array_merge($this->_cacheOptions,$options['cacheOptions']);

            $options = $options['configFile'];
        }
        parent::__construct($environment,$options);
    }

    /**
     * Load configuration file of options.
     *
     * Optionally will cache the configuration.
     *
     * @param  string $file
     * @throws Zend_Application_Exception When invalid configuration file is provided
     * @return array
     */
    protected function _loadConfig($file)
    {
        if (!$this->_cacheConfig)
            return parent::_loadConfig($file);

        require_once 'Zend/Cache.PHP';
        $cache = Zend_Cache::factory(
            $this->_cacheOptions['frontendType'],$this->_cacheOptions['backendType'],array_merge(array( // Frontend Default Options
                'master_file' => $file,'automatic_serialization' => true
            ),$this->_cacheOptions['frontendOptions']),array_merge(array( // Backend Default Options
                'cache_dir' => APPLICATION_PATH . '/data/cache'
            ),$this->_cacheOptions['backendOptions'])
        );

        $config = $cache->load('Zend_Application_Config');
        if (!$config) {
            $config = parent::_loadConfig($file);
            $cache->save($config,'Zend_Application_Config');
        }

        return $config;
    }
}

我将index.PHP(在公共根目录中)更改为:

<?PHP

// Define path to application directory
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH',realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV',(getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR,array(
    realpath(APPLICATION_PATH . '/../library'),get_include_path(),)));

/** My_Application */
require_once 'My/Application.PHP';

// Create application,bootstrap,and run
$application = new My_Application(
    APPLICATION_ENV,array(
            'configFile' => APPLICATION_PATH . '/configs/application.ini'
    )
);
$application->bootstrap()
            ->run();

重新加载页面,您会看到缓存的ini文件.祝好运.

猜你在找的PHP相关文章