2009-12-24

【程式】ZF : Set Metadata Cache

Zend Framework 在執行 SQL 時,會先再跑一個 SQL,取得 Metadata 資訊後,

才會真正的執行你的 SQL。

所以如果將 Metadata Cache 後,就可以減少一個 SQL 語法,讓 DB 不至於被操到死~~

可以參考:Zend_Db_Table > Caching Table Metadata

我的環境是 : Zend Framework 1.9.5

我在 application > Bootstrap.php

加入:

<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
    protected function _initDbTableCache() {
        // 設定 metadata cache
        $fOpt = array(
            'automatic_serialization' => true
        );
        $bOpt = array(
            'cache_dir' => '/tmp/_zf_cache'
        );
        $cache = Zend_Cache::factory('Core', 'File', $fOpt, $bOpt);
        Zend_Db_Table_Abstract::setDefaultMetadataCache($cache);
    }
    //...... 略

之後只要有 Cache ,就不會再去 DB 查 Metadata 了。

但如果你的 Table 有修改過,可能就要記得去清一下 Cache 了。

我是還沒改過Table ( Alter Table),不確定是不是一定要清,但感覺是要。

下圖,加入 Cache 後,就沒有再去查 Metadata 了。

搞定~

0 comments:

張貼留言