Magento'nun Önbelleğini programlı olarak nasıl temizleyebilirim?


23

Birkaç yayın betiğinde Mage'yi önyükleyerek, sürüm yapılandırmalarını otomatikleştiriyorum. Senaryoların sonunda, Magento'nun önbelleğini temizlemem gerekiyor.

MageSınıflardan veya yöntemlerden birini kullanarak önbelleği temizlemenin bir yolu var mı ?


1
Bunu dene: Mage :: app () -> cleanCache () veya Mage :: app () -> getCacheInstance () -> flush ();
Stefan Gregori

Yanıtlar:


25

Önbelleği programlı olarak temizlemek için lütfen aşağıdaki kodu deneyin

Mage::app()->cleanCache()

veya

Mage::app()->getCacheInstance()->flush(); 

40

Gerçekten de istersen, yalnızca bir veya daha fazla önbellek türünü temizleyebilirsin. Bu aslında yönetici bölümünün yaptığıdır. AltındaMage_Adminhtml_CacheController::massRefreshAction

Tüm parametreler arasında typesdöndüğünü ve aşağıdakileri çağırdığını görebilirsiniz.

$tags = Mage::app()->getCacheInstance()->cleanType($type);
Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
$updatedTypes++;

Olası türler aşağıdaki gibidir:

  1. yapılandırma
  2. düzen
  3. block_html
  4. Çevirmek
  5. koleksiyonları
  6. eav
  7. config_api
  8. config_api2
  9. tam sayfa

Ve bunlar arayarak iade edilebilir Mage::app()->getCacheInstance()->getTypes()


3
Programlama önbelleği temizleme ile ilgili fakir olmuştur bu yorum seçilen cevaptan daha yararlıdır. DispatchEvent'i çağırmak önemli olduğu için, dispatchEvent çağrısını ekleyene kadar Varnish ESI'lerim silinmiyordu. (Tabii ki bu, diğer modüllerin kodlarını buna göre
Barry Carlyon

6

Tüm önbelleği temizlemek için hızlı bir harici komut dosyası:

<?php

require_once './app/Mage.php';
umask(0);
Mage::app('default');
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);

try {
    $allTypes = Mage::app()->useCache();
    foreach($allTypes as $type => $value) {
        Mage::app()->getCacheInstance()->cleanType($type);
        Mage::dispatchEvent('adminhtml_cache_refresh_type', array('type' => $type));
        echo "{$type} </br>";
    }
    echo 'done';
} catch (Exception $e) {
    echo $e->getMessage();
}

3

Bizim n98-magerun kullanabiliriz . Özellikle konuşlandırma komut dosyalarının yürütülmesi sırasında önbelleği hiçbir zaman temizlememeniz gerektiğinden. Ayrıca sys:setup:incrementalMagento kurulum komut dosyalarının daha kontrollü yürütülmesi için alt komuta bakın.


"Özellikle konuşlandırma komut dosyalarının yürütülmesi sırasında önbelleği hiçbir zaman temizlememeniz gerektiğinden" ifadesine ek bilgi verebilir misiniz?
STW

1
Magento otomatik olarak yükseltmeleri çalıştıran bir özelliğe sahiptir. Bu, yapılandırma önbelleğinin yeniden oluşturulması gerektiğinde tetiklenir. Özel olarak bu özelliğe ihtiyaç duymadığınız ve bunun için dikkatlice kodlamadığınız sürece, sizin veya iş arkadaşlarınızın beklememiş olabileceği paralel bir işlemi başlatırsınız.
Melvyn

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.