Як використовувати Базу даних як slow_backend замість файлів у Magento EE 1,12?


14

У Magento EE 1.12.0.0 Здавалося б, незалежно від того, які зміни конфігурації я вношу app/etc/local.xml, кеш файлів за замовчуванням продовжує використовуватись (про що свідчить var/cache/завжди заповнення).

Очікування

  • Memcached використовується як fast_backend.
  • База даних використовується як slow_backend.
  • Кеш файлів взагалі не використовується (тобто var/cache/завжди повинен бути порожнім).

Фактичний вихід

  • Memcached використовується як fast_backend.
  • База даних взагалі не використовується.
  • Файл кешу використовується.

Процедура тестування

  1. Внесіть зміну конфігурації на app/etc/local.xml.
  2. Перезапустіть Memcached і Apache (просто на добру міру, і це на моїй місцевій коробці розробників, щоб я також міг).
  3. Очистіть кеш файлу ( rm -rf var/cache/*).
  4. Оновіть домашню сторінку.
  5. Перевірте вміст кешу файлів ( ls var/cache).
  6. Засмутіться і поверніться до №1 із іншою зміною конфігурації.

Конфігурація

Зміст мого app/etc/local.xmlтакий:

<config>
    <global>
        <install>
            <date><![CDATA[{{actual_data}}]]></date>
        </install>
        <crypt>
            <key><![CDATA[{{actual_data}}]]></key>
        </crypt>
        <disable_local_modules>false</disable_local_modules>
        <resources>
            <db>
                <table_prefix><![CDATA[]]></table_prefix>
            </db>
            <default_setup>
                <connection>
                    <host><![CDATA[{{actual_data}}]]></host>
                    <username><![CDATA[{{actual_data}}]]></username>
                    <password><![CDATA[{{actual_data}}]]></password>
                    <dbname><![CDATA[{{actual_data}}]]></dbname>
                    <initStatements><![CDATA[SET NAMES utf8]]></initStatements>
                    <model><![CDATA[mysql4]]></model>
                    <type><![CDATA[pdo_mysql]]></type>
                    <pdoType><![CDATA[]]></pdoType>
                    <active>1</active>
                </connection>
            </default_setup>
        </resources>
        <session_save><![CDATA[db]]></session_save>
        <cache>memcached</cache>
        <slow_backend>database</slow_backend>
        <slow_backend_store_data>1</slow_backend_store_data>
        <memcached>
            <servers>
                <server>
                    <host><![CDATA[{{actual_data}}]]></host>
                    <port><![CDATA[{{actual_data}}]]></port>
                    <persistent><![CDATA[0]]></persistent>
                    <weight><![CDATA[2]]></weight>
                    <timeout><![CDATA[10]]></timeout>
                    <retry_interval><![CDATA[10]]></retry_interval>
                    <status><![CDATA[]]></status>
                </server>
            </servers>
            <compression><![CDATA[0]]></compression>
            <cache_dir><![CDATA[]]></cache_dir>
            <hashed_directory_level><![CDATA[]]></hashed_directory_level>
            <hashed_directory_umask><![CDATA[]]></hashed_directory_umask>
            <file_name_prefix><![CDATA[]]></file_name_prefix>
        </memcached>
    </global>
    <admin>
        <routers>
            <adminhtml>
                <args>
                    <frontName><![CDATA[admin]]></frontName>
                </args>
            </adminhtml>
        </routers>
    </admin>
</config>

1
Як осторонь, потрібно прочитати: Magento / Zend Framework's TwoLevels Cache
Backkend

Я ніколи не знаходив рішення цієї проблеми; однак, оскільки я з тих пір працював над додатковими проектами Magento під керівництвом іншої компанії і використовував конфігурації, подібні описаним тут, я схильний вважати, що це була проблема з одним із: 1. Установка Magento (погана модифікації / модулі / тощо) 2. Сценарії надання компанії для їх серверів погано адаптовані від Drupal, а деякі речі були пропущені 3. Акт Божий / Природа 4. (швидше за все) Це Magento Незалежно, @fantasticrice дав чудову відповідь, що повинен допоможіть Googlers, щоб він отримав приз!
Robr3rd

Відповіді:


5

Я думаю, що це не правильний формат для вузлів кешу. Я розумію, що всі параметри кешу повинні бути вкладені всередину <cache>вузла. Тож використовувати кеш дворівневу з memcached + базами даних буде приблизно так:

<cache>
    <backend>memcached</backend>
    <slow_backend>database</slow_backend>
    <memcached>
        <servers>
            <server1>
                <host>...</host>
                <port>11211</port>
                <persistent>1</persistent>
                <weight>2</weight>
                <timeout>10</timeout>
                <retry_interval>10</retry_interval>
                <status/>
            </server1>
            ...
        </servers>
        <compression>0</compression>
        <cache_dir/>
        <hashed_directory_level/>
        <hashed_directory_umask/>
        <file_name_prefix/>
    </memcached>
</cache>

Майте на увазі, що <full_page_cache>можна налаштувати точно так само і при бажанні можна використовувати різні налаштування. Вони є лише двома окремими екземплярами кеша.

Як бічна примітка, я б настійно рекомендував замість цього використовувати Redis . Він підтримує теги, тому його можна використовувати як однорівневий кеш, і він буде працювати набагато краще, ніж дворівнева база даних +.


3
Я другий за адвокацію Redis. Повільний забіг db завдає більше шкоди, ніж допомагає.
philwinkle

Я також спробував цю конфігурацію (саме з цього я і почав - те, що я розмістив, було запропоновано як альтернативу, оскільки вищезгадане не працювало). Чи, <full_page_cache>можливо, заповнення var/cache? Наскільки я розумію, що він замість цього використовує var/full_page_cache. Я також намагався використовувати той же <cache>...</cache>(ваш стиль) для <full_page_cache>і enterprise.xmlбезрезультатно. Що стосується Redis, то, на жаль, необхідність використання резервного пакета БД.
Robr3rd

Я щойно помітив, що у вас є <cache>...<servers>...<server1>...</server1>. Чи є 1в server1важливий?
Robr3rd

@RobertRobinson - ні, зовсім не важливо, за винятком способу визначення декількох вузлів під <servers>. Ви можете використовувати foo, bar, baz так само легко, як server1, server2, server3. Ви правильні, що full_page_cacheекземпляр отримує власний підкаталог, varякщо він використовує файли.
fantasticrice

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.