我需要帮助在zend框架中实现缓存

时间:2012-03-12 13:48:59

标签: zend-framework

我必须从Db中检索一些数据并将它放在cache.i中对此我不知道并且我是zend框架的基本学习者。我正在使用zend framework1.11.1和wamp服务器。可以任何人帮助我如何开始以及如何处理任何tutoria.pls帮助我

3 个答案:

答案 0 :(得分:1)

Zend Cache提供一种在缓存中存储数据并提高速度的非常简单的方法。 Zend使用Frontend和Back端来缓存。前端对于访问或操作缓存很有用。后端对于在File,Memcache,Sqlite等中存储数据非常有用。

首先通过在bootstrap文件中创建on函数来初始化前端和备份的引导程序文件。

受保护的功能_initCache(){

$frontend= array(
    'lifetime' => 7200,
    'automatic_serialization' => true
);

$backend= array(
    'cache_dir' => '../application/tmp/',
);

$cache = Zend_Cache::factory('core',
        'File',
        $frontend,
        $backend
);
Zend_Registry::set('cache',$cache);

}

然后使用zend缓存工厂来定义缓存对象。参数核心定义了zend缓存核心的泛型类型File参数是定义缓存存储意味着在哪里存储缓存的记录然后来回来自前端和后端。

现在使用zend注册表注册该缓存数组,以便您可以在任何控制器,模型等中使用它。

在任何控制器或任何想要使用数据缓存的模型中定义以下代码。

    $result1 =””;
    $cache = Zend_Registry::get('cache');

if(!$result1 = $cache->load('mydata')) {
        echo 'caching the data…..';
    $data=array(1,2,3);
    $cache->save($data, 'mydata');
} else {
    echo 'retrieving cache data…….';
    Zend_Debug::dump($result1);
}

首先在上面的代码中我们得到了缓存数组。现在,如果未设置结果1,则缓存完成意味着文件是在后端数组中定义的路径生成的

对于下一次页面加载,从缓存数据存储的文件中检索数据。

您可以按照定义的路径检查文件。

在该文件中,数据采用json格式。

答案 1 :(得分:0)

答案 2 :(得分:0)

这是一个关于Zend_Cache如何工作的示例:您需要一个在本地主机上工作的memcached系统,或者您可以使用Backend_File将缓存的项目存储在文件中。

#在你的bootstrap中定义它

// configure caching frontend strategy
    $oFrontend = new Zend_Cache_Core(
        array(
    'caching' => true,
            'automatic_serialization' => true,
            'ignore_user_abort' => true,
            'lifetime' => 3600
        )
    );

// configure caching backend strategy
    $oBackend = new Zend_Cache_Backend_Memcached(
        array(
            'servers' => array(
                array(
                    'host' => "127.0.0.1",
                    'port' => "11211", 
                )
            ),
            'compression' => true
        )
    );

// getting a Zend_Cache_Frontend_Page object
    $cache = Zend_Cache::factory($oFrontend, $oBackend);

    Zend_Registry::set('cache', $cache);

#然后,在您的控制器中,您可以按如下方式使用它:

    $cache = Zend_Registry::get('cache');
    # save item in memcached
    $data = array(1,2,3,4,5);
    $cache->save($data, "cache_name");

    # load item from your cache
    print_r($cache->load("cache_name"));

然后,您可以在Zend Framework在线文档中查看所有前端,后端和可用选项,以便根据您的特定需求进行配置。