जवाबों:
@ निरादर, 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 से अपने प्रोजेक्ट स्थान पर जा रहे हैं
नीचे दिया गया कोड प्रोग्रामेटिक रूप से कैश फ्लश करता है। इसने मेरे लिए अच्छा काम किया।
केस 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();
}
हार्डकोडिंग प्रकार एक बुरा विचार है। इसके बजाय आप द्वारा इस्तेमाल किया एक ही विधि का उपयोग कर सकते हैं 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());
}
इनकार के जवाब में जोड़ने के लिए, आप थोड़ी 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/
आप निम्न आदेशों का उपयोग करके सभी कैश को फ्लश या रीफ्रेश कर सकते हैं
php bin/magento cache:clean
php bin/magento cache:flush
उम्मीद है इससे आपको मदद मिलेगी।
CLI
खुले मैगनेटो रूट में, फिर php bin/magento cache:clean
सभी कमांड दर्ज करने के लिए कैशे को इस तरह से साफ़ करें । अधिक जानकारी के लिए इस लिंक पर क्लिक करें
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();
}
मुझे उम्मीद है कि यह आपके लिए उपयोगी होगा। :)
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();
}
}
?>
यह मेरे लिए काम किया
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cacheManager = $objectManager->create('Magento\Framework\App\Cache\Manager');
$cacheManager->flush($cacheManager->getAvailableTypes());