Magento отключает кеш из базы данных
Существует способ отключить кеш из меню System->Cache Management
.
Как я могу сделать то же самое без входа на сайт, используя SQL-запрос базы данных?
Ответы
Ответ 1
Самый простой способ отключить кеш - это использовать SQL-запрос:
UPDATE `core_cache_option` SET value=0;
И очистите папку кэша, чтобы быть уверенным:
rm -rf <YOUR SITE PATH HERE>/magento/var/cache/*
В Magento Enterprise Edition вам также нужно очистить каталог full_page_cache (благодаря Bartosz Górski):
rm -rf [YOUR SITE PATH HERE]/magento/var/full_page_cache/*
Ответ 2
Если вы не хотите входить в систему на сайте, используйте ниже script, чтобы сделать это возможным
<?php
$mageFilename = 'app/Mage.php';
require_once $mageFilename;
umask(0);
Mage::app('admin');
Mage::app()->cleanAllSessions();
Mage::app()->getCacheInstance()->flush();
Mage::app()->cleanCache();
$types = Array(
0 => 'config',
1 => 'layout',
2 => 'block_html',
3 => 'translate',
4 => 'collections',
5 => 'eav',
6 => 'config_api',
7 => 'fullpage',
8=>'config_api2'
);
$allTypes = Mage::app()->useCache();
$updatedTypes = 0;
foreach ($types as $code) {
if (!empty($allTypes[$code])) {
$allTypes[$code] = 0;
$updatedTypes++;
}
$tags = Mage::app()->getCacheInstance()->cleanType($code);
}
if ($updatedTypes > 0) {
Mage::app()->saveUseCache($allTypes);
echo "Caches disabled Programmatically";
}
else {
echo "Caches disabled Already";
}
просто создайте свой собственный script и сделайте свою часть кеша
надеюсь, что это поможет вам.
Ответ 3
Вот простой фрагмент кода, который можно использовать в настройке script для включения или отключения отдельных типов кеша:
$cacheOptions = Mage::app()->useCache();
// disable full page cache:
$cacheOptions['full_page'] = 0;
// enable block cache:
$cacheOptions['block_html'] = 1;
Mage::app()->saveUseCache($cacheOptions);
Вы можете искать типы кеша в таблице базы данных core_cache_option:
mysql> select * from core_cache_option;
+-------------+-------+
| code | value |
+-------------+-------+
| block_html | 1 |
| collections | 1 |
| config | 1 |
| config_api | 1 |
| config_api2 | 1 |
| eav | 1 |
| full_page | 0 |
| layout | 1 |
| translate | 1 |
+-------------+-------+
9 rows in set (0.00 sec)
Ответ 4
Я создал оболочку Script, чтобы включить, отключить и/или очистить кран magento. Он считывает необходимые параметры (DBHost и т.д.) Из etc/local.xml...
Вы можете скачать его из моего github gist:
https://gist.github.com/seangreen/d9557726b479e066d71f
Фактические запросы mysql таковы:
Отключить кеш:
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_cache_option SET value=0;" $DBNAME
Включить кеш:
mysql -h $DBHOST -u $DBUSER -p$DBPASS -e "UPDATE core_cache_option SET value=1;" $DBNAME
И после отключения или включения его очистки для очистки кеша:
rm -rf var/cache/*
Ответ 5
Если вы по-прежнему используете кеш кэш файловой системы по умолчанию (A.K.A Архитектурный facepalm hider), вы увидите файл в кеше: mage --- 687_CORE_CACHE_OPTIONS и файл с именем: mage --- internal-metadatas --- 687_CORE_CACHE_OPTIONS. Он под магом - 4, если вы придерживаетесь значений по умолчанию.
Таким образом, нет необходимости очищать весь сайт, если вам нужно удалить только 2 из них. Лучше всего сделать это, просто попросите Magento удалить их, потому что у вас также может быть XCache или для профессиональных людей полноценный стеллаж, полный no-sql-db.
Mage:: приложение() → CleanCache (массив ( ' MAGE'));
С: Mage:: app() → saveUseCache ($ cacheSettings); он не нужен, он автоматически удалит его.
Итак, "rm -rf var/cache/" будет работать только в системе NOOB. И может привести к сбою системы Magento, но шансы очень низкие. Для этого вам нужно много трафика, и вы можете получить это с помощью системы кэширования файловой системы по умолчанию.