ubuntu

Конфигурация кэширования memcache для 1С Битрикс в Ubuntu OS

Memcached — это серверная технология, позволяющая кэшировать данные в оперативной памяти. Под многие языки программирования написаны клиентские библиотеки, которые выступают посредниками при работе с данным сервером, таким образом ускоряя работу.

Технология Memcache была разработана Danga Interactive для того, чтобы увеличить скорость работы портала LiveJournal.com, там Memcache сводит время загрузки из базы данных практически до нуля, в результате повышается скорость загрузки страницы для пользователей, ускоренное управление ресурсами и снижается нагрузка на сервер. Далее технологию применила для себя социальная сеть Facebook, которая на сегодня является самым крупным пользователем сервиса Memcache. Учитывая количество людей на фейсбуке ежедневно, без этой технологии эта социальная сеть была бы невозможна.

Но, перейдем к практическим советам. В нашем эксперименте мы использовали VPS сервер на Ubuntu, вы можете заказать себе такой VPS сервер у нас в разделе облачные битрикс-серверы.

Memcache управляет следующим функционалом:
get() – извлекает значение по ключу
set() – устанавливает значение
add() – добавляет кэш, если его не существует
replace() – заменяет кэш
flush() – удаляет все закэшированные данные

Эти знания нам потребуются на этапе создания оптимизационных скриптов.

Итак, прежде всего на сервере мы устанавливаем все что необходимо для работы Apache / MySQL / PHP, далее переходим уже к настройкам кэширования.

Устанавливаем memcache:

apt-get install memcached  

Редактируем дефолтные настройки memcached, для этого наберите в консоли: nano /etc/memcached.conf и редактируем конфиг таким образом:

# memcached будет работать, как демон 
-d 

# лог будет складывать здесь 
logfile /var/log/memcached.log 

# для начала установим 256 мб под хранилище кэша 
# чем больше поставите, тем больше отберете от всей оперативки сервера! 
# для нагруженных проектов мы поставили-бы 512 
-m 256 

# слушать будет этот порт 
-p 11211 

# пользователь 
-u nobody 

# слушаем localhost 
-l 127.0.0.1

Перезапускаем memcached, после перезагрузки проверяем, что поднялся

/etc/init.d/memcached restart

Устанавливаем модуль для PHP, компилим его

apt-get install php5-dev libmemcache-dev 

pecl download memcache 
tar xzvf memcache-2.2.7.tgz 
cd memcache-2.2.7/ 
phpize && ./configure --enable-memcache && make 
cp modules/memcache.so /usr/lib/php5/20100811/ 
# тут тоже обратите внимание на цифры у себя 

echo 'extension=memcache.so' >> /etc/php5/apache2/php.ini 
/etc/init.d/apache2 restart  

Теперь надо сказать Битриксу, чтобы он пользовался кэшем. Для этого запускаем битрикс сайт на сервере, и идем папку /bitrix/.settings.php и ставим тип кеширования в коде:

'cache' => 
array ( 
'value' => 
array ( 
'sid' => '$_SERVER["DOCUMENT_ROOT"]."#01"', 
'type' => 'memcache', 
'memcache' => 
array ( 
'host' => '127.0.0.1', 
), 
), 
'readonly' => false, 
),

Внимание, до 14-ой версии 1С битрикс настройки были в папке /bitrix/php_interface т.е. надо открывать файл dbconn.php

И прописывать в dbconn.php:

define("BX_CACHE_TYPE", "memcache"); //устанавливаем тип кеширования 
define("BX_CACHE_SID", $_SERVER["DOCUMENT_ROOT"]."#01"); //это не даст кешам разных сайтов перемешаться 
define("BX_MEMCACHE_HOST", "127.0.0.1"); //это адрес где работает мемкешед (в нашем случае локально)

Comments are closed.