Все манипуляции, описанные в статье производились на Ubuntu 14.04, для вашей ОС пути к файлам могут отличаться. Для выполнения действий из этой статьи вам потребуются root-привелегии.>
Установка и настройка Memcached на сервере
Устанавливаем Memcached на сервер следующей командой:
apt-get install memcached
Настраиваем Memcached в файле /etc/memcached.conf:
# Запуск Memcached в качестве демона
-d
# Файл для записи логов
logfile /var/log/memcached.log
# Размер выделяемой оперативной памяти
-m 128
# Порт для соединения
-p 11211
# Имя пользователя, от которого будет работать Memcached
-u memcache
# IP-адрес, который будет слушаться. Если Битрикс и Memcached у вас на одном сервере, укажите 127.0.0.1
-l 127.0.0.1
После сохранения настроек перезапускаем Memcached:
/etc/init.d/memcached restart
Далее необходимо установить дополнительные модули для PHP, в том числе модуль для работы с Memcached. Внимание! Для PHP версии 5.6 пакет php-dev называется php5.6-dev, а не php5-dev (встречается во многих инструкциях по настройке Memcached). Соответственно, команда для PHP 5.6 будет выглядеть следующим образом:
apt-get install php5.6-dev libmemcache-dev
Для старших версий PHP 5 команда будет следующей:
apt-get install php5.6-dev libmemcache-dev
Устанавливаем модуль memcache:
pecl install memcache
После установки модуля memcache обратите внимание на пути к установленным файлам, выведенными в процессе установки. В нашем случае это /usr/include/php/20131226 — здесь нужно обратить внимание на директорию, название которой представляет собой 8 последовательных цифр — 20131226. Они должны совпадать с номером версии вашего PHP Api. Узнать вашу версию можно в phpinfo() — строка PHP Extension или командой phpize -v.
Кроме этого, стоит также обратить внимание на путь установки memcache.so до этих 8 цифр, в последних строках вывода установки:
Build process completed successfully
Installing '/usr/lib/php/20131226/memcache.so'
В нашем случае файл memcache.so должен находиться в директории /usr/lib/php5/20131226/, по этому нам нужно его туда скопировать:
cp /usr/lib/php/20131226/memcache.so /usr/lib/php5/20131226/memcache.so
Далее необходимо добавить запись «extension=memcache.so» в ваш php.ini. В нашем случае он находится в /etc/php5/apache2/. После чего нужно перезапустить Apache:
/etc/init.d/apache2 restart
Настройка Memcached в Битриксе
До версии Bitrix 14.0 настройка производилась в файле dbconn.php (находится в директории /bitrix/php_interface/), в более свежих редакциях настройка производится в файле .settings.php (находится в директории /bitrix/). Дабы исключить какие-либо несостыковки, рекомендуется произвести настройки в обеих файлах.
В файле .settings.php
'cache' => array(
'value' => array(
'type' => 'memcache',
'memcache' => array(
'host' => '127.0.0.1',
'port' => '11211'
),
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
),
'readonly' => false,
),
В файле dbconn.php
define("BX_CACHE_TYPE", "memcache");
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01");
define("BX_MEMCACHE_HOST", "127.0.0.1");
define("BX_MEMCACHE_PORT", "11211");
Как проверить, что Memcached работает и подключен к Битриксу?
Проверить, работает ли Memcached на сервере, можно командами командной строки top, iotop, htop и им подобными. В выводимыми ими списками нужно искать memcache/memcached.
Проверить, подключен ли модуль PHP можно функцией phpinfo(). В выводимой ей информацией нужно искать блок memcache. Внимание! Не memcached (разница в последней букве d), т.к. Битрикс этот модель не поддерживает.
В самом Bitrix проверить, подключен ли Memcached, можно в 2 местах:
- Панель производительности.
Находится в «Настройки» -> «Производительность» -> «Панель производительности» -> вкладка «Битрикс» -> настройка «Хранение кеша». В колонке «Значение» должно стоять memcache. - Композитный сайт.
Находится в «Настройка» -> «Настройки продукта» -> «Композитный сайт» -> вкладка «Настройки» -> блок «Механизм хранения кеша» -> настройка «Хранить кеш в». Если в этом выпадающем списке можно выбрать memcached, значит он подключен, в противном случае в скобках к этому пункту будет написано, что memcached не подключен. После выбора пункта с Memcached можно указать хост и порт и проверить соединение.
Что бы проверить работу непосредственно кеширования, можно написать простенький скрипт. Примеров достаточно на просторах интернета.