मैं कैसे प्रोग्रामो को Magento के कैश फ्लश कर सकता हूं?


23

मैं कई रिलीज़ स्क्रिप्ट्स में Mage बूटस्ट्रैपिंग द्वारा रिलीज़ कॉन्फ़िगरेशन को स्वचालित कर रहा हूँ। स्क्रिप्ट के अंत में, मुझे Magento के कैश को फ्लश करने की आवश्यकता है।

क्या Mageवर्गों या विधियों में से एक का उपयोग करके कैश को फ्लश करने का एक तरीका है ?


1
इसे आज़माएँ: Mage :: app () -> cleanCache () या Mage :: app () -> getCacheInstance () -> फ्लश ();
स्टीफन ग्रेगोरी

जवाबों:



40

यदि आप वास्तव में चाहते थे तो आप केवल एक या अधिक कैश प्रकारों को भी साफ़ कर सकते थे। यह वास्तव में है कि व्यवस्थापक अनुभाग इसे कैसे करता है। के अंतर्गतMage_Adminhtml_CacheController::massRefreshAction

आप देख सकते हैं कि यह सभी मापदंडों से गुजरता है typesऔर निम्नलिखित कॉल करता है

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

संभावित प्रकार इस प्रकार हैं:

  1. config
  2. ख़ाका
  3. block_html
  4. अनुवाद करना
  5. संग्रह
  6. EAV
  7. config_api
  8. config_api2
  9. पूरा पृष्ठ

और इन्हें कॉल करके लौटाया जा सकता है Mage::app()->getCacheInstance()->getTypes()


3
प्रोग्राम को चुनिंदा उत्तर की तुलना में अधिक उपयोगी होने के कारण कैश क्लियरिंग के बारे में फ़िफ़िंग होना। चूंकि डिस्पैचवेंट को कॉल करना महत्वपूर्ण है, इसलिए जब तक मैंने डिस्पैचवेंट कॉल नहीं जोड़ा, तब तक मेरी वार्निश ईएसआई क्लीयर नहीं हो रही थी। (जो निश्चित रूप से अन्य मॉड्यूल को तदनुसार अपने कोड को आग लगाने की अनुमति देगा)
बैरी कार्लाइयन

6

सभी कैश को साफ़ करने के लिए एक त्वरित बाहरी स्क्रिप्ट:

<?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

हमारा उपयोग n98-magerun कर सकता है । खासकर जब से आपको तैनाती स्क्रिप्ट के निष्पादन के दौरान कैश को फ्लश नहीं करना चाहिए। इसके अलावा देखो sys:setup:incrementalMagento सेटअप स्क्रिप्ट का अधिक नियंत्रित निष्पादन के लिए subcommand।


क्या आप अपने बयान में कुछ अतिरिक्त अंतर्दृष्टि प्रदान कर सकते हैं "विशेष रूप से जब से आपको तैनाती स्क्रिप्ट के निष्पादन के दौरान कैश को फ्लश नहीं करना चाहिए"?
एसटीडब्ल्यू

1
Magento में एक सुविधा है जो स्वचालित रूप से उन्नयन चलाता है। यह ट्रिगर होता है, जब कॉन्फ़िगरेशन कैश को फिर से बनाना पड़ता है। जब तक आपको विशेष रूप से उस सुविधा की आवश्यकता नहीं होती है और इसके लिए सावधानीपूर्वक कोड की आवश्यकता होती है, तो आप एक समानांतर प्रक्रिया शुरू करते हैं जो आपने या आपके सहयोगियों ने प्रत्याशित नहीं की होगी।
मेल्विन

1

यदि आपको वास्तव में सभी कैश स्टोरेज को खाली करने की आवश्यकता है, तो निम्न कोड का उपयोग करें।

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

यहां फ्लश फ़ंक्शन डिफ़ॉल्ट मैगनेटो कैश कार्यक्षमता को कॉल करता है, यदि आपको अधिक स्पष्टीकरण की आवश्यकता है, तो निम्न यूआरएल को संदर्भित करें।

/programming/15028159/magento-flush-cache-storage

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.