2011-05-23 44 views
6

我正在開發一個向數據庫引入新表的Magento擴展。每當我發佈修改表模式的擴展的新版本時,我發現用戶被迫手動點擊系統>高速緩存管理下的「刷新高速緩存存儲」按鈕。如何清除Magento的DB架構緩存?

我想有在被安裝在我的分機自動清除緩存。我知道如何以編程方式完成與按鈕相同的功能,但我不想這樣做,因爲這會刪除整個Magento緩存文件夾並對性能產生負面影響。

也許任何人都知道如何編寫代碼,將清除我的表的模式的高速緩存,並做到儘可能明確 - 讓不相關的緩存數據安然無恙?

更新:我發現我的含表的模式高速緩存此文件:/var/cache/mage-f/mage---d07_DB_PDO_MYSQL_DDL_<table_name>_1d。現在我如何在代碼中定位它? :)

+1

需要緩存刷新是很常見的。你如何執行更改? – clockworkgeek 2011-05-23 13:14:04

+0

我對此感到驚訝,以及我在之前版本的擴展中沒有看到它。以下是我的升級腳本中的內容: '$ installer = $ this; $ installer-> startSetup(); $ installer->運行(」 ALTER TABLE '{$這 - > getTable(' MY_TABLE ')}' ADD COLUMN 'columnX' INT(11)NULL, ADD COLUMN 'columnY' VARCHAR(45)NULL, ADD COLUMN'columnZ'VARCHAR(45)NULL, ADD COLUMN'columnW'text NULL AFTER'columnA'; 「); $ installer-> endSetup();' 我是否在做與衆不同的事情? – urig 2011-05-23 15:22:28

回答

8

這是我已經能夠拿出:

$app = Mage::app(); 
if ($app != null) 
{ 
    $cache = $app->getCache(); 
    if ($cache != null) 
    { 
     $cache->clean('matchingTag', array('DB_PDO_MYSQL_DDL')); 
    } 
} 

這隻會刪除保存有關數據庫模式的信息緩存條目和元數據文件。

注意,它會刪除這些條目中的所有表。沒有簡單的方法來清除特定表格的緩存模式,並保持其餘部分不變。