Как использовать memcached с Joomla - PullRequest
7 голосов
/ 11 августа 2009

Как я могу использовать memcache в Joomla? Я новичок в этой области, поэтому, пожалуйста, объясните свой ответ.

Ответы [ 5 ]

15 голосов
/ 03 сентября 2009

Вам нужно будет установить memcached на вашем сервере и, вероятно, для этого потребуется доступ с правами root. Вы можете получить memcached от http://www.danga.com/memcached/. Требуется libevent, который можно скачать здесь: http://www.monkey.org/~provos/libevent/

Наконец, вам нужно получить расширение PHP PECL для memcache. Чтобы установить это, вам нужно перейти на сервер, на котором установлен PHP, и выполнить следующую команду:

pecl install memcache

Опять же, для этого вам, скорее всего, понадобится root-доступ к вашему серверу. После того, как вы установили libevent, memcached и расширения PECL, перейдите в глобальную конфигурацию в Joomla и выберите Memory Cache в качестве обработчика кэша в разделе «Настройки кэша». После сохранения глобальной конфигурации снова откройте ее, и под входом обработчика кэша должны появиться дополнительные входы. Установите для сервера памяти Chache значение localhost, а для порта - 11211. Это должно соответствовать параметрам, которые вы используете для запуска memcached из командной строки.

РЕДАКТИРОВАТЬ: Вы также можете использовать XCache не только для хранения данных аналогично Memcache, но он также будет кэшировать код операции, сгенерированный PHP. Таким образом, вместо того, чтобы читать код PHP с диска и анализировать его каждый раз, он будет хранить код в памяти для следующего запроса.

Обязательно выберите XCache в качестве обработчика кэша в глобальной конфигурации. Прочтите это для информации по установке XCache: http://xcache.lighttpd.net/wiki/InstallFromSource

5 голосов
/ 29 июня 2012

Чтобы Joomla использовала memcache для кэширования сеансов, вам нужно вручную отредактировать файл configuration.php и изменить эту строку:

public $session_handler = 'database';

к этому:

public $session_handler = 'memcache';

И это то, чего не хватает везде, вам нужно добавить новую опцию memcache_settings:

  public $memcache_settings = 'a:3:{s:10:"persistent";s:1:"0";s:11:"compression";s:1:"0";s:7:"servers";a:1:{i:0;a:2:{s:4:"host";s:9:"127.0.0.1";s:4:"port";s:5:"11211";}}}';

Это сериализованный многомерный массив. Я использую этот код для генерации вышеуказанной строки:

 $a = array(
   "persistent" => "0", 
   "compression" => "0", 
   "servers" => array(
     "0" => array(
       "host" => "127.0.0.1", "port" => "11211")
     )
   );

echo(serialize($a));

Если вы не добавите параметр memcache_settings, ваши сеансы никогда не будут работать с memcache.

4 голосов
/ 16 августа 2014

Эти настройки в configuration.php работают для memcached в Joomla 3.3 +

public $cache_handler = 'memcached';
public $memcached_server_host = '127.0.0.1';
public $memcached_server_port = '11211';
public $memcached_persist = '1';
public $memcached_compress = '1';
public $cachetime = '15';
public $session_handler = 'memcached';
public $session_memcached_server_host = '127.0.0.1';
public $session_memcached_server_port = '11211';

Чтобы установить memcached в системе Debian:

apt-get install memcached php5-memcached

(вы также можете использовать memcache вместо каждого вхождения memcached в вышеуказанных public переменных и установить старое расширение php5-memcache)

Обновление до php5.5 даст вам встроенный Zend Opcode Cache - его можно использовать с APCu ( APCu - Альтернативный PHP Кэш с удаленным кэшом кода операции ) - для локального кэширования пользовательского пространства, если вам не нужен распределенный кэш памяти (memcached)

Для одного VPS APCu имеет меньший объем памяти и является более подходящим кешем (особенно с php5.5) и может быть установлен в configuration.php с:

public $cache_handler = 'apc';
public $session_handler = 'apc';
2 голосов
/ 22 марта 2013

Этот способ также может предложить некоторую помощь для Joomla 2.5, поскольку он указывает на экран администратора Joomla для использования memcache http://www.siteground.com/tutorials/supercacher/joomla_memcached.htm

0 голосов
/ 04 августа 2015

Лучше не использовать APC для внутреннего кэша. Это может вызвать много фрагментации. Я только видел, как это ухудшает производительность Joomla.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...