Jawaban:
@ denish, katakan dengan menggunakan cmd Anda dapat menghapus cache. Tapi masalah Anda di baris perintah php
Untuk menjalankan klien php sebagai perintah di jendela, Anda perlu mengatur php sebagai lingkungan tersedia. Bagaimana mengatur variabel env untuk PHP?
Setelah itu Anda dapat menjalankan perintah magento 2 cli dari cmd like
php bin/magento cache:clean
php bin/magento cache:flush
Or
php bin/magento c:c
php bin/magento c:f
Sedang pergi di lokasi proyek Anda dari cmd
Kode di bawah ini secara otomatis mem-flush cache. Ini bekerja dengan baik untukku.
Kasus 1: Di luar Magento
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();
}
Kasus 2: Di dalam 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;
}
$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();
}
Hardcoding tipe adalah ide yang buruk . Sebagai gantinya Anda dapat menggunakan metode yang sama yang digunakan oleh cache:flush
dan cache:clean
perintah. Kelas pengelola cache juga dapat menarik semua jenis cache untuk Anda, seperti yang dilakukan pada contoh di bawah ini.
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());
}
Untuk menambah jawaban denish, Anda bisa menulis skrip php kecil dan meletakkannya di folder root magento Anda:
<?php
$command = 'php bin/magento cache:clean && php bin/magento cache:flush';
echo '<pre>' . shell_exec($command) . '</pre>';
?>
Ini akan memberi Anda output seperti:
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
Pastikan Anda benar-benar dapat mengeksekusi php dari baris perintah, kalau tidak, ini tidak akan berguna. Untuk windows Anda harus memastikan Anda telah menambahkan php.exe ke PATH Anda di Variabel Lingkungan. Silakan lihat http://willj.co/2012/10/run-wamp-php-windows-7-command-line/
Anda dapat membersihkan atau menyegarkan semua cache menggunakan perintah berikut
php bin/magento cache:clean
php bin/magento cache:flush
Saya harap ini akan membantu Anda.
CLI
root magento terbuka lalu masukkan untuk menghapus cache php bin/magento cache:clean
seperti ini untuk memasukkan semua perintah. Info lebih lanjut klik pada tautan ini
1. Tentukan konstruktor - lewati
Magento \ Framework \ App \ Cache \ TypeListInterface
dan
Magento \ Framework \ App \ Cache \ Frontend \ Pool
ke konstruktor file Anda seperti yang didefinisikan di bawah ini: -
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. Sekarang tambahkan kode berikut ke metode di mana Anda ingin menghapus / membersihkan cache: -
$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();
}
Saya harap ini bermanfaat bagi Anda. :)
buat file bernama cacheflush.php dan Unggah folder root Magento Anda seperti public_html folder httdocs. maka yoursite.com/cacheflush.php Ini akan bekerja dengan sempurna. Jika Anda tidak memiliki mod CLI di hosting Anda tidak ada masalah ... cukup gunakan kode ini .. itu akan mengurangi waktu Anda.
<?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();
}
}
?>
ini bekerja untuk saya
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$cacheManager = $objectManager->create('Magento\Framework\App\Cache\Manager');
$cacheManager->flush($cacheManager->getAvailableTypes());