2011-05-23 25 views
6

DB'ye yeni bir tablo tanıtan bir Magento uzantısı geliştiriyorum. Tablo şemasında değişiklikler yapan uzantının yeni bir sürümünü yayınladığımda, kullanıcıların Sistem> Önbellek Yönetimi altındaki "Önbellek Deposunu Temizle" düğmesini el ile tıklatmaya zorlandığını görüyorum.Magento'nun DB Şemasını Önbelleğe Alma İşlemi Nasıl Temizlenir?

Uzantımın yüklenip önbelleği otomatik olarak temizlemesini istiyorum. Programatik olarak düğmeyle aynı şeyi nasıl yapacağımı biliyorum ama tercih etmem, çünkü bu tüm Magento önbellek klasörünü siler ve performansı olumsuz etkiler.

Tablonun şemasının önbelleğe alınmasını temizleyecek ve özellikle olabildiğince etkili olan kod yazmayı bilen herhangi biri olabilir - ilgisiz önbelleğe alınmış veriler bozulmaz mı?

Güncelleme: Masamın şema önbelleğini içeren dosyayı buldum: /var/cache/mage-f/mage---d07_DB_PDO_MYSQL_DDL_<table_name>_1d. Şimdi bunu kodda nasıl hedeflerim? :)

+1

Bir önbellek yenilemesi gerekli olağandışı bir durumdur. Değişiklikleri nasıl yapıyorsunuz? – clockworkgeek

+0

Bunun yanı sıra, uzantımın önceki sürümünde görmediğim kadar şaşırdım. Güncelleme komut dosyamda şu var: '$ installer = $ this; $ installer-> startSetup(); $ Installer-> Çalıştır (" alter TABLO '{$ this-> GetTable (' my_table ')}' Ekle KOLON 'columnX' INT (11) NULL ADD KOLON 'columnY' VARCHAR (45) NULL, Sütun Ekle 'VARCHAR (45) NULL, ADD COLUMN' columnW 'text NULL AFTER' columnA '; "); $ installer-> endSetup(); ' Sıradan bir şey yapıyorum mu? – urig

cevap

8

Bu benim ile gelip başardık budur: Bu sadece DB şemaları hakkında bilgi tutun önbellek girdilerini ve meta dosyaları siler

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

.

Tüm tablolarda bu girdileri sileceğini unutmayın. Belirli bir tablonun önbelleğe alınmış şemasını temizlemenin ve geri kalanını dokunulmadan bırakmanın kolay bir yolu yoktur.

İlgili konular