Yanıtlar:
@ denish, cmd kullanarak önbelleği temizleyebilirsiniz diyelim. Ama php komut satırında ur sorunu
Php istemcisi penceresinde komut olarak çalıştırmak için kullanılabilir php ortam olarak ayarlamanız gerekir PHP için env değişkeni nasıl ayarlanır?
Bundan sonra cmd gibi magento 2 cli komutlarından herhangi birini çalıştırabilirsiniz
php bin/magento cache:clean
php bin/magento cache:flush
Or
php bin/magento c:c
php bin/magento c:f
CMD'den proje yerinize giderken
Aşağıdaki kod programlı olarak önbelleği temizler. Benim için iyi çalıştı.
Durum 1: Magento Dışı
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();
}
Durum 2: Magento'nun İçinde
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();
}
Türleri kodlamak kötü bir fikirdir. Bunun yerine cache:flush
ve cache:clean
komutları tarafından kullanılan yöntemi kullanabilirsiniz . Önbellek yöneticisi sınıfı, aşağıdaki örnekte olduğu gibi sizin için tüm önbellek türlerini de çekebilir.
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());
}
Denish'in cevabına eklemek için küçük bir php betiği yazabilir ve magento kök klasörünüze yerleştirebilirsiniz:
<?php
$command = 'php bin/magento cache:clean && php bin/magento cache:flush';
echo '<pre>' . shell_exec($command) . '</pre>';
?>
Bu size şöyle bir çıktı verecektir:
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
Lütfen php'yi komut satırından hariç tutabildiğinizden emin olun, aksi takdirde bu işe yaramaz olacaktır. Windows için php.exe'yi Ortam Değişkenleri'ndeki PATH'nize eklediğinizden emin olmalısınız. Lütfen http://willj.co/2012/10/run-wamp-php-windows-7-command-line/ adresine bakın.
Aşağıdaki komutları kullanarak tüm önbelleği temizleyebilir veya yenileyebilirsiniz
php bin/magento cache:clean
php bin/magento cache:flush
Umarım bu sana yardımcı olmuştur.
CLI
Açık magento kökü sonra php bin/magento cache:clean
tüm komutları girmek için bu şekilde önbelleği temizlemek için girin. Daha fazla bilgi bu linke tıklayın
1. Yapıcı tanımlayın - geçiş
Magento \ Framework \ App \ Cache \ TypeListInterface
ve
Magento \ Framework \ App \ Cache \ Frontend \ Havuzu
aşağıda belirtildiği şekilde dosyanızın yapıcısına: -
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. Şimdi önbelleği temizle / yıkamayı istediğiniz yönteme aşağıdaki kodu ekleyin: -
$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();
}
Umarım bu sizin için yararlı olacaktır. :)
cacheflush.php adlı bir dosya oluşturun ve Magento kök klasörünüzü httdocs klasörünün public_html gibi yükleyin. sonra siteniz.com/cacheflush.php Mükemmel çalışır. Barındırma sisteminizde CLI modunuz yoksa sorun yok ... sadece bu kodu kullanın .. zamanınızı azaltacaktır.
<?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();
}
}
?>
bu benim için çalıştı
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cacheManager = $objectManager->create('Magento\Framework\App\Cache\Manager');
$cacheManager->flush($cacheManager->getAvailableTypes());