विंडो सिस्टम पर Magento 2 में कैश को प्रोग्राम रीफ्रेश करें


12

मैं कोड की तलाश कर रहा हूं जो स्क्रिप्ट के माध्यम से Magento2 कैश को रीफ्रेश या फ्लश कर सकता है।

यह Magento 1.x में इतना आसान था।

मैं WAMP सर्वर (विंडो) पर Magento2 चला रहा हूं।

जवाबों:


2

@ निरादर, cmd का उपयोग करके आप कैश साफ़ कर सकते हैं। लेकिन php कमांड लाइन पर उर मुद्दा

आदेश विंडो में आदेश के रूप में php ग्राहक को चलाने के लिए आप वातावरण के रूप में सेट php की जरूरत उपलब्ध कैसे PHP के लिए env चर सेट करने के लिए?

उसके बाद आप cmd जैसे किसी भी magento 2 cli कमांड को चला सकते हैं

php bin/magento cache:clean
php bin/magento cache:flush
           Or
php bin/magento c:c
php bin/magento c:f

Cmd से अपने प्रोजेक्ट स्थान पर जा रहे हैं


उसी तरह जैसे
मैजेंटो के

23

नीचे दिया गया कोड प्रोग्रामेटिक रूप से कैश फ्लश करता है। इसने मेरे लिए अच्छा काम किया।

केस 1: मैजेंटो के बाहर

use Magento\Framework\App\Bootstrap;
include('../app/bootstrap.php');
$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();


try{
    $_cacheTypeList = $objectManager->create('Magento\Framework\App\Cache\TypeListInterface');
    $_cacheFrontendPool = $objectManager->create('Magento\Framework\App\Cache\Frontend\Pool');
    $types = array('config','layout','block_html','collections','reflection','db_ddl','eav','config_integration','config_integration_api','full_page','translate','config_webservice');
    foreach ($types as $type) {
        $_cacheTypeList->cleanType($type);
    }
    foreach ($_cacheFrontendPool as $cacheFrontend) {
        $cacheFrontend->getBackend()->clean();
    }
}catch(Exception $e){
    echo $msg = 'Error : '.$e->getMessage();die();
}

केस 2: मैजेंटो के अंदर

public function __construct(
    Context $context,
    \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
    \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool
) {
    parent::__construct($context);
    $this->_cacheTypeList = $cacheTypeList;
    $this->_cacheFrontendPool = $cacheFrontendPool;
}


$types = array('config','layout','block_html','collections','reflection','db_ddl','eav','config_integration','config_integration_api','full_page','translate','config_webservice');
foreach ($types as $type) {
    $this->_cacheTypeList->cleanType($type);
}
foreach ($this->_cacheFrontendPool as $cacheFrontend) {
    $cacheFrontend->getBackend()->clean();
}

अगर किसी को केवल एक विशिष्ट उत्पाद के कैश को साफ करने की जरूरत है तो stackoverflow.com/a/42636405/3733214
Gediminas

16

हार्डकोडिंग प्रकार एक बुरा विचार है। इसके बजाय आप द्वारा इस्तेमाल किया एक ही विधि का उपयोग कर सकते हैं cache:flushऔर cache:cleanआदेशों। कैश प्रबंधक वर्ग आपके लिए सभी कैश प्रकार भी खींच सकता है, जैसा कि नीचे दिए गए उदाहरण में किया गया है।

public function __construct(
    \Magento\Framework\App\Cache\Manager $cacheManager
) {
    $this->cacheManager = $cacheManager;
}

private function whereYouNeedToCleanCache()
{
    $this->cacheManager->flush($this->cacheManager->getAvailableTypes());

    // or this
    $this->cacheManager->clean($this->cacheManager->getAvailableTypes());
}

2

इनकार के जवाब में जोड़ने के लिए, आप थोड़ी php स्क्रिप्ट लिख सकते हैं और इसे अपने magento रूट फ़ोल्डर में रख सकते हैं:

<?php
    $command = 'php bin/magento cache:clean && php bin/magento cache:flush';
    echo '<pre>' . shell_exec($command) . '</pre>';
?>

यह आपको एक आउटपुट देगा जैसे:

Cleaned cache types:
config
layout
block_html
collections
reflection
db_ddl
eav
config_integration
config_integration_api
full_page
translate
config_webservice
Flushed cache types:
config
layout
block_html
collections
reflection
db_ddl
eav
config_integration
config_integration_api
full_page
translate
config_webservice

कृपया सुनिश्चित करें कि आप वास्तव में कमांड लाइन से php को बढ़ा सकते हैं, अन्यथा यह बेकार हो जाएगा। खिड़कियों के लिए आपको यह सुनिश्चित करना होगा कि आपने पर्यावरण चर में अपने PATH में php.exe जोड़ लिया है। कृपया देखें http://willj.co/2012/10/run-wamp-php-windows-7-command-line/


यह कुछ भी नहीं दिखा रहा है
अरुणेंद्र

1
खिड़कियों के लिए आपको यह सुनिश्चित करना होगा कि आपने पर्यावरण चर में अपने PATH में php.exe जोड़ लिया है। कृपया willj.co/2012/10/run-wamp-php-windows-7-command-line
tecjam

यदि आप PHP के लिए shell_exec () का उपयोग करने में सक्षम हैं, तो आपका इंस्टॉल सुरक्षित नहीं है। इस फ़ंक्शन को लाइव वातावरण में अक्षम किया जाना चाहिए।
frustratedtech

2

आप निम्न आदेशों का उपयोग करके सभी कैश को फ्लश या रीफ्रेश कर सकते हैं

php bin/magento cache:clean   
php bin/magento cache:flush

उम्मीद है इससे आपको मदद मिलेगी।


इसे खिड़की पर कैसे करें?
अरुणेन्द्र

@ अरुणेंद्र, CLIखुले मैगनेटो रूट में, फिर php bin/magento cache:cleanसभी कमांड दर्ज करने के लिए कैशे को इस तरह से साफ़ करें । अधिक जानकारी के लिए इस लिंक पर क्लिक करें
Bojjaiah

उसी तरह जैसे कि Magento 1 के लिए कदम क्या है
zus

1

1. कंस्ट्रक्टर को परिभाषित करें - पास

Magento \ फ्रेमवर्क \ अनुप्रयोग \ कैश \ TypeListInterface

तथा

Magento \ फ्रेमवर्क \ अनुप्रयोग \ कैश \ दृश्यपटल \ पूल

अपनी फ़ाइल के निर्माता के रूप में नीचे परिभाषित:

public function __construct(
    Context $context,
    \Magento\Framework\App\Cache\TypeListInterface $cacheTypeList,
    \Magento\Framework\App\Cache\Frontend\Pool $cacheFrontendPool
) {
    parent::__construct($context);
    $this->_cacheTypeList = $cacheTypeList;
    $this->_cacheFrontendPool = $cacheFrontendPool;
}

2. अब निम्नलिखित कोड को उस विधि में जोड़ें जहाँ आप स्पष्ट / फ्लश कैश चाहते हैं: -

$types = array('config','layout','block_html','collections','reflection','db_ddl','eav','config_integration','config_integration_api','full_page','translate','config_webservice');
foreach ($types as $type) {
    $this->_cacheTypeList->cleanType($type);
}
foreach ($this->_cacheFrontendPool as $cacheFrontend) {
    $cacheFrontend->getBackend()->clean();
}

मुझे उम्मीद है कि यह आपके लिए उपयोगी होगा। :)


0

cacheflush.php नाम की एक फ़ाइल बनाएं और अपने Magento रूट फ़ोल्डर को httdocs फ़ोल्डर के public_html की तरह अपलोड करें। उसके बाद yourite.com/cacheflush.php यह पूरी तरह से काम करेगा। यदि आपको अपनी होस्टिंग में कोई समस्या नहीं है, तो आप इस कोड का उपयोग करें .. यह आपके समय को कम करेगा।

<?php

        use Magento\Framework\App\Bootstrap;

        require __DIR__ . '/app/bootstrap.php';

        $bootstrap = Bootstrap::create(BP, $_SERVER);

        $obj = $bootstrap->getObjectManager();

        $state = $obj->get('Magento\Framework\App\State');
        $state->setAreaCode('frontend');
        $k[0]='bin/magento';
        $k[1]='cache:flush'; // write your proper command like setup:upgrade,cache:enable etc...
        $_SERVER['argv']=$k;
        try {
            $handler = new \Magento\Framework\App\ErrorHandler();
            set_error_handler([$handler, 'handler']);
            $application = new Magento\Framework\Console\Cli('Magento CLI');
            $application->run();
        } catch (\Exception $e) {
            while ($e) {
                echo $e->getMessage();
                echo $e->getTraceAsString();
                echo "\n\n";
                $e = $e->getPrevious();
            }
        }
    ?>

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