Подружить Magento и X-Cache

28.02.2013г. // Рубрики: web, Рецепты, cms
Как-то сделал товарищу магазин на Magento, ну и там пока то да сё - пустил его пожить на своём VDS-е. Мне было не в тягость, пока этот магазин не начал периодически отжирать ресурсы не слабо. Сегодня я решил задуматься о разных php-шных заморочках и вспомнил, что у меня к одному форуму на сервере уже прикручен X-Cache, вот его решил использовать и для магенты.
Быстро поискал в интернете и нашел нужные настройки, в файле app/etc/local.xml, в секции <global> необходимо сделать вставку:
<cache>
    <backend>xcache</backend>
    <prefix>MAGENTO_</prefix>
</cache>
здесь prefix - это всего лишь только префикс, и больше ничего, нужен, чтобы разделять кеши от разных проектов, можно придумать любое имя.
Всё бы ничего, да только после этого Magento сдох (или Магента сдохла?) Короче, полез в var/report и полюбовался на:
a:4:{i:0;s:78:"fast_backend must implement the Zend_Cache_Backend_ExtendedInterface interface";i:1;s:1258:"#0 lib/Zend/Cache/Backend/TwoLevels.php(153): Zend_Cache::throwException('fast_backend mu...')
#1 lib/Zend/Cache.php(153): Zend_Cache_Backend_TwoLevels->__construct(Array)
#2 lib/Zend/Cache.php(94): Zend_Cache::_makeBackend('TwoLevels', Array, true, true)
#3 app/code/core/Mage/Core/Model/Cache.php(124): Zend_Cache::factory('Varien_Cache_Co...', 'TwoLevels', Array, Array, true, true, true)
#4 app/code/core/Mage/Core/Model/Config.php(1350): Mage_Core_Model_Cache->__construct(Array)
#5 app/Mage.php(432): Mage_Core_Model_Config->getModelInstance('core/cache', Array)
#6 app/code/core/Mage/Core/Model/App.php(396): Mage::getModel('core/cache', Array)
#7 app/code/core/Mage/Core/Model/App.php(290): Mage_Core_Model_App->_initCache(Array)
#8 app/code/core/Mage/Core/Model/App.php(332): Mage_Core_Model_App->baseInit(Array)
#9 app/Mage.php(640): Mage_Core_Model_App->run(Array)
#10 index.php(80): Mage::run('', 'store')
#11 {main}";s:3:"url";s:1:"/";s:11:"script_name";s:10:"/index.php";}
Пришлось вновь залезать в Интернет и разбираться.
Итак, лекарство:
  1. ищем файлик app/code/core/Mage/Core/Model/Cache.php и открываем его редактором
  2. находим там строчку, начинающуюся с case 'xcache':
  3. комментируем пониже выражение $enable2levels = true;
В общем, у меня получилось так:
case 'xcache':
    if (extension_loaded('xcache')) {
        /*$enable2levels = true;*/
        $backendType = 'Xcache';
    }
    break;
После этого магазин шустренько зажил, так что можно сказать, что я доволен.
На всякий случай решил записать этот рецептик, возможно ещё пригодится при каком-нибудь апгрейде.

Рубрики