首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Zend Framework Cache 緩存機制完整實戰示例

     編輯:PHP 綜合知識

項目結構

ZF Cache 項目結構截圖

核心代碼實現

<?php
require_once 'Zend/Controller/Action.php';
require_once 'Zend/Cache.php';
require_once 'Zend/Registry.php';
require_once 'Zend/Db.php';
require_once 'Zend/Db/Table.php';

class IndexController extends Zend_Controller_Action
{
    public function init()
    {
        $params = array(
            'host'     => 'localhost',
            'username' => 'root',
            'password' => 'root',
            'dbname'   => 'mysql'
        );
        $db = Zend_Db::factory('Pdo_Mysql', $params);
        Zend_Db_Table::setDefaultAdapter($db);
        Zend_Registry::set('db', $db);
    }

    public function indexAction()
    {
        // 前端緩存配置
        $frontendOptions = array(
            'lifeTime'                 => 7200,          // 2 小時生命周期
            'automatic_serialization'  => true           // 自動序列化
        );

        // 後端存儲配置
        $backendOptions = array(
            'cache_dir' => 'C:/tmp/'                     // 緩存文件目錄
        );

        // 獲取緩存核心對象
        $cache = Zend_Cache::factory('Core', 'File', $frontendOptions, $backendOptions);

        // 緩存讀取邏輯
        if (!$result = $cache->load('myresult')) {
            // 緩存未命中:查詢數據庫
            $dbAdapter = Zend_Registry::get('db');
            $result = $dbAdapter->query('SELECT * FROM user')->fetchAll();
            $cache->save($result, 'myresult');
            echo "This one is from database!<br/>";
        } else {
            // 緩存命中
            echo "This one is from cache!<br/>";
        }
        print_r($result);
    }
}

關鍵組件說明

  • Zend_Cache::factory():工廠模式創建緩存對象,前端 Core + 後端 File
  • lifeTime:緩存有效期(秒)
  • automatic_serialization:自動處理數組/對象序列化
  • cache_dir:文件緩存目錄,需寫入權限
  • load()/save():核心讀寫接口,鍵值為 myresult

此模式適用於頻繁讀取、較少變更的數據場景,顯著降低數據庫壓力,提升響應速度。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved