Проект Memcache API and Integration состоит из нескольких частей:
cache_get()
и cache_set()
)Для установки модуля, необходимо выполнить следующие шаги:
memcache.hash_strategy="consistent"
$conf['cache_inc'] ='sites/all/modules/memcache/memcache.db.inc';
Файлы memcache.inc или memcache.db.inc используются вместо стандартного файла cache.inc. Вариант с memcache.db.inc сохраняет все данные также в базе данных, поэтому вы можете получить выгоду от скорости работы сайта даже в том случае, если Memcache будет выключен. Сайт не должен прекращать работу из-за недоступности Memcache, это только вопрос того, доступно ли кеширование или нет. Вариант с memcache.inc не сохраняет какую-либо информацию в базе данных, таким образом с ним можно получить лучшее быстродействие. Если вы используете этот вариант, то важно, чтобы у вас было достаточно памяти для использования Memcache для хранения всех данных (включая кеш страниц), в другом случае, неудачные обращения в кеш погубят всю выгоду от кеширования.
Для включения модуля, измените значение переменной $conf в файле settings.php, чтобы сказать Друпалу о том, какой файл cache_inc следует использовать:
<?php
$conf = array(
// The path to wherever memcache.inc is. The easiest is to simply point it
// to the copy in your module's directory.
'cache_inc' => './sites/all/modules/memcache/memcache.inc',
// or
// 'cache_inc' => './sites/all/modules/memcache/memcache.db.inc',
);
?>
Если вы хотите простую версию, то можете начать с одним стандартным экземпляром Memcache на своём веб-сервере: memcached -m 24 -p 11211 -d. Если для ваших потребностей этого достаточно, то никакой другой настройки не требуется. Если вы хотите использовать этот модуль с возможностью кластеризации и хранить кеш среди нескольких машин или кеш будет храниться на машине, которая отличается от веб-сервера, читайте дальше.
Доступные memcache-серверы определяются переменной $conf в файле settings.php. Если вы не определите ни одного сервера, memcache.inc решит, что memcache запущен на адресе 127.0.0.1:11211. Если это так и вы не хотите ничего менять, то дальнейшее конфигурирование не требуется.
Если у вас запущено больше одного memcache-экземпляра, вам нужно добавить два массива в переменную $conf; — memcache_servers и memcache_bins. Массивы используют следующий образец:
'memcache_servers' => array(host1:port => cluster, host2:port => cluster, hostN:port => cluster)
'memcache_bins' => array(bin1 => cluster, bin2 => cluster, binN => cluster)
Предупреждение: избегайте использования localhost, используйте IP-адреса или названия хостов, которые будут сохранятся во всей сети. Модель bin/cluster/server может быть описана следующим образом:
Вот пример простой установки, которая использует два экземпляра memcache, оба запущены на адресе 10.1.1.1. Экземпляр на 11212 принадлежит кластеру pages и таблица cache_page относится к кластеру pages. Таким образом, всё, что кешируется, за исключением кеша страниц (cache_page), будет размещено в default или 11211. Кеш страниц будет в 11212.
<?php
$conf = array(
'memcache_servers' => array('10.1.1.1:11211' => 'default',
'10.1.1.1:11212' => 'pages'),
'memcache_bins' => array('cache_page' => 'pages'),
);
?>
Вот пример конфигурации, которая использует два кластера, default и cluster2. Пять экземпляров memcache разделены между двумя кластерами. cache_filter и cache_menu относятся к cluster2, все другие к default.
<?php
$conf = array(
'cache_inc' => './sites/all/modules/memcache/memcache.inc',
'memcache_servers' => array('10.1.1.1:11211' => 'default',
'10.1.1.1:11212' => 'default',
'10.1.1.2:11211' => 'default',
'10.1.1.3:11211' => 'cluster2',
'10.1.1.4:11211' => 'cluster2'),
'memcache_bins' => array('cache' => 'default',
'cache_filter' => 'cluster2',
'cache_menu' => 'cluster2'),
);
?>
Если вы хотите иметь несколько установок Друпала распределённых среди экземпляров memcache, вам нужно включить уникальный префикс для каждой установки Друпала в массив переменной $conf в файле settings.php:
<?php
$conf = array(
'memcache_key_prefix' => 'something_unique',
);
?>
2010.02.12 | Drupal 6 Performance Tips |
Комментарии
Шутку юмора оценил. То есть предлагается снести весь PHP код settings.php и вместо него прописать другой? А то, что массив $conf уже назначен в settings - вроде как и не считается?
А если серьезно - memcahed запущен, но добавление вышеприведенного кода или же $conf['cache_inc'] = 'sites/all/modules/memcache/memcache.inc'; просто тупо вешает сайт.