2011-05-23 10 views
6

DBに新しいテーブルを導入するMagentoエクステンションを開発しています。テーブルスキーマを変更する新しいバージョンの拡張機能をリリースするたびに、システム>キャッシュ管理の[キャッシュキャッシュのフラッシュ]ボタンを手動でクリックする必要があることがわかりました。MagentoのDBスキーマのキャッシュを消去するには?

私の拡張機能では、インストール時に自動的にキャッシュをクリアしたいと考えています。私はプログラム的にボタンと同じことをする方法を知っていますが、これは、Magentoキャッシュフォルダ全体を削除し、パフォーマンスに悪影響を与えるので、そうしたくはありません。

誰でも、テーブルのスキーマのキャッシュをクリアし、できるだけ具体的に行うコードを書く方法を知っているかもしれません。無関係なキャッシュされたデータを無傷のままにしておきますか?

更新:私のテーブルのスキーマキャッシュを含むファイルがここにあります:/var/cache/mage-f/mage---d07_DB_PDO_MYSQL_DDL_<table_name>_1d。今、コードでどのようにターゲットを設定しますか?これは、DBスキーマに関する情報を保持する唯一のキャッシュエントリおよびメタデータファイルを削除します

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

::)

+1

キャッシュのリフレッシュが必要であることは珍しいことです。どのように変更を行っていますか? – clockworkgeek

+0

私はこれに驚いていましたが、私の拡張機能の以前のバージョンでは見たことがありません。私のアップグレードスクリプトには次のものがあります: '$ installer = $ this; $ installer-> startSetup(); $ installer->ラン(」 ALTER表 '{の$ this - > getTable(' MY_TABLE ')}' ADDの列 'COLUMNX' INT(11)NULL、 ADDの列 'columnY' VARCHAR(45)NULL、 ADD COLUMN 'columnZ' VARCHAR(45)NULL、 ADD COLUMN 'columnW'テキストはNULL後に 'columnA'; ")を追加します。 $ installer-> endSetup(); ' 私は普通のことは何ですか? – urig

答えて

8

これは私が思い付くことができてきたものです。

これらのエントリはすべてのテーブルで削除されることに注意してください。特定のテーブルのキャッシュされたスキーマをクリアし、残りの部分をそのままにする簡単な方法はありません。