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
Ссылки
На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.
Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.