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

7
webkul 11 Авг 2009 в 17:12

5 ответов

Лучший ответ

Вам нужно будет установить 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 в качестве обработчика кэша в настройках кэша. После сохранения глобальной конфигурации откройте ее снова, и под полем Cache Handler должно появиться больше входных данных. Установите для сервера Memory Chache значение localhost, а для порта - 11211. Это должно соответствовать параметрам, которые вы используете для запуска memcached из командной строки.

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

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

15
jlleblanc 5 Сен 2009 в 19:27

Чтобы заставить 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.

5
Marian HackMan Marinov 28 Июн 2012 в 22:32

Эти настройки в 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';
4
Stuart Cardall 16 Авг 2014 в 09:45

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

2
tristanbailey 22 Мар 2013 в 12:29

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

0
Joost van der Laan 4 Авг 2015 в 09:55