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

Для нестандартного окружения установите Memcached вручную (CentOS):
yum -y install memcached
service memcached start
chkconfig memcached on
yum -y install php-pecl-memcache
service httpd restart
Конфигурация
Отредактируйте /etc/sysconfig/memcached:
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="1024"
OPTIONS="-l 127.0.0.1 -U 0 -t 8"
Параметры:
MAXCONN— максимальное количество одновременных подключений (по умолчанию 1024)CACHESIZE— объём памяти для кэша в МБ (оцените по размеру файлового кэша проекта)-t 8— количество потоков-U 0— UDP отключён-l 127.0.0.1— только локальный интерфейс (обязательно для безопасности)
Важно: параметр
-l 127.0.0.1обязателен — без него Memcached будет доступен из сети и уязвим для атак amplification.
Перезапустите Memcached:
# CentOS 6
service memcached restart
# CentOS 7+
systemctl restart memcached.service
Подключение к 1С-Битрикс
В файл /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"
),
),
);
Альтернативно — добавить секцию в /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,
),
Проверка подключения
Откройте панель производительности: 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";
} elseif ($cache->StartDataCache()) {
echo "no cache";
$cache->EndDataCache(array("arResult" => array(1,2,3,4,5)));
}
Очистка кэша
Через telnet:
telnet localhost 11211
flush_all
quit
Через netcat:
echo "flush_all" | nc localhost 11211