311 слов | 1 минута
Memcached
Memcached — программное обеспечение, которое используется для кэширования данных, требующих при генерации большого количества ресурсов.
Использование memcached для 1С-Битрикс повысит производительность, уменьшит время отклика сервера, а страницы сайта будут загружаться быстрее.
Установка memcached
Если используете 1С-Битрикс: Веб-окружение, то memcached и уже установлен. Его необходимо включить залогинившись в BitrixEnv на сервере выбрав в меню Configure Memcahed service for the pool. Затем переходите к конфигурации memcached.

Если же memcached не установлен или вы используете не стандартное веб-окружение, установите его на сервер. В CentOS это делается так:
yum -y install memcached
Далее добавьте memcached в автозагрузку.
service memcached start
chkconfig memcached on
Установите библиотеку php-memcache (в 1С-Битрикс: Веб-окружение модуль уже подключён).
yum -y install php-pecl-memcache
Затем перезагрузите apache.
Конфигурация memcached
В файле /etc/sysconfig/memcached задайте следующие параметры (если нет причин использовать иное):
# Ansible managed
# memcached settings
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-l 127.0.0.1 -U 0 -t 8"
Параметры MAXCONN (количество одновременных подключений, по умолчанию 1024), CACHESIZE (объем памяти для кэша, по умолчанию 64MB) подбираются экспериментальным путем в зависимости от характера нагрузки и от имеющихся ресурсов. Оценить объем памяти, необходимой для кэширования (параметр CACHESIZE), можно по размеру вашего файлового кэша. Если на проекте файловый кэш занимает 3 GB, то использование memcached c 256МБ памяти не будет эффективным за счет частого вытеснения.
Options:
-t 8 — количество потоков memcached (по умолчанию 4);-U 0 — порт для UDP, 0 — отключен;-l 127.0.0.1 — обязательно убедитесь, что параметр -l содержит адрес 127.0.0.1. Он разрешает подключение к memcached только с локального интерфейса и делает его уязвимым для amplification атак из сети.
После настройки memcaсhed перезапустите его:
CentOS 6:
service memcached restart
CentOS 7:
systemctl restart memcached.service
Настройка memcached в 1С-Битрикс
Чтобы 1С-Битрикс стал использовать memcached нужно внести изменения в конфигурационные файлы.
В файле /bitrix/php_interface/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");
И в файле /bitrix/.settings_extra.php (если его нет, то создать)
<?php
return array(
'cache' => array(
'value' => array(
'type' => 'memcache',
'memcache' => array(
'host' => '127.0.0.1',
'port' => '11211',
),
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01"
),
),
);
?>
Вместо файла settings_extra.php секцию с memcache можно добавить в файл /bitrix/.settings.php
'cache' => array(
'value' => array (
'type' => 'memcache',
'sid' => $_SERVER["DOCUMENT_ROOT"]."#01",
'memcache' => array(
'host' => '127.0.0.1',
'port' => '11211',
),
),
'readonly' => false,
),
Убедиться, что 1С-Битрикс подключился к memcached можно панели производительности http://вашсайт.ru/bitrix/admin/perfmon_panel.php

или с помощью скрипта
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
$cache = new CPHPCache();
if ($cache->InitCache(3600, '12356356gt' , '/' )) {
echo "cache";
$res = $cache->GetVars();
$arResult = $res['arResult'];
} elseif ($cache->StartDataCache()) {
echo "no cache";
$arResult = array(1,2,3,4,5);
$cache->EndDataCache(array("arResult" => $arResult));
}
Как очистить кэш memcached
Если понадобится очистить кэш memcached это можно сделать. Самый простой способ — telnet.
$ telnet localhost 11211
flush_all
quit
Или через netcat.
echo "flush_all" | nc localhost 11211