Jump to main content Jump to doc navigation

Требования

  • Работающий сервер memcached и адрес, на котором он работает
  • Расширение PHP memcached, установленное на сервере с MODX

[!WARNING] Расширение называется memcached, а не memcache. Расширение memcache удалено в PHP 7, а MODX 3.x требует PHP 8.1 или новее, поэтому на поддерживаемой установке его нет.

Настройка Memcache в MODX

Перейдите в системные настройки и присвойте параметру cache_handler значение xPDO\Cache\xPDOMemCached.

Значение — полное имя класса с пространством имён. Точечная форма cache.xPDOMemCache из MODX 2.x больше не разрешается: класс не загружается, в журнал пишется Could not load class: cache.xPDOMemCache, и сайт продолжает писать в файлы.

Чтобы указать MODX на сервер memcached, создайте системный параметр default_memcached_server со значением вида localhost:11211. Настройка называется по разделу кэша, который она обслуживает, поэтому каждый раздел читает собственный параметр — resource_memcached_server, scripts_memcached_server. Общий параметр memcached_server работает как значение по умолчанию.

Параметр По умолчанию Назначение
cache_handler xPDO\Cache\xPDOFileCache Класс обработчика кэша
default_memcached_server localhost:11211 Адрес сервера memcached
default_memcached_compression true Сжимать ли сохраняемые значения
cache_prefix — Префикс перед каждым ключом кэша

Несколько серверов перечисляются через запятую: server1.tld:11211,server2.tld:11211.

Почему параметр может не подействовать

MODX создаёт менеджер кэша раньше, чем читает системные настройки из базы данных: обработчик ему нужен, чтобы их прочитать. Поэтому параметр cache_handler, сохранённый как системная настройка, вступает в силу слишком поздно — при следующем запросе MODX снова соберёт файловый обработчик и запишет кэш настроек на диск через него.

Чтобы параметр подействовал сразу, задайте обработчик в core/config/config.inc.php:

$config_options = [
    'cache_handler' => 'xPDO\\Cache\\xPDOMemCached',
    'default_memcached_server' => 'localhost:11211',
];

После этого очистите core/cache/, чтобы кэш настроек был собран заново через новый обработчик.

Один сервер на несколько сайтов

Если вы используете один экземпляр memcached для нескольких сайтов MODX, задайте каждому сайту свой cache_prefix, например site_a_. Без этого сайты будут затирать записи друг друга.

Смотрите также

  • Кэширование — разделы кэша ядра и параметры, выбирающие их обработчик

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • JT Skaggs
  • deJaya
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$194 per month—let's make that $500!

Learn more