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, но шансы очень низкие. Для этого вам нужно много трафика, и вы можете получить это с помощью системы кэширования файловой системы по умолчанию.