Как подключить Memcached в Webasyst

Webasyst поддерживает механизм кеширование с помощью Memcached.

Для включения создайте файл wa-config/cache.php со следующим содержимым:

<?php
return array(
    'default' => array(
        'type' => 'memcached',
        'namespace' => '...',
        'servers' => array(
            array(
                'host' => HOST, //укажите нужное значение
                'port' => PORT, //укажите нужное значение
            ),
        )
    )
);

Укажите произвольный идентификатор в значении ключа 'namespace', чтобы избежать конфликтов при использовании нескольких сайтов на одном сервере.

Если секцию 'servers' не указать, то обращение будет выполняться к адресу 127.0.0.1:11211.

См. также документацию разработчика о настройке кеширования.

25 комментариев

  • +2
    Greg Greg 7 января 2016 07:41 #

    Добрый день, пытаюсь настроить memcached после cache.php сайт не откликается, сервис работает, прописал

    <?php

    return array(

    'default' => array(

    'type' => 'memcached',

    'servers' => array(

    array(

    'host' => '127.0.0.1',

    'port' => '11211'

    ),

    )

    )

    );

    [root@elegno ~]# systemctl status memcached

    memcached.service - Memcached

    Loaded: loaded (/usr/lib/systemd/system/memcached.service; enabled; vendor preset: disabled)

    Active: active (running) since Thu 2016-01-07 12:19:08 MSK; 13min ago

    Main PID: 2859 (memcached)

    CGroup: /system.slice/memcached.service

    </pre>

    └─2859 /usr/bin/memcached -u memcached -p 11211 -m 4096 -c 2048 -l 127.0.0.1


    PHP Fatal error: Class 'Memcached' not found in /var/www/greg/data/www/pergo-shop.ru/wa-system/cache/adapters/waMemcachedCacheAdapter.class.php on line 20

  • +1
    Валерьевич Виталий Валерьевич Виталий 20 сентября 2016 13:49 #

    Подскажите где узнать свой

    'host' => HOST,

    'port' => PORT

    на vps

  • +1
    Silicoid Silicoid 23 января 2017 16:05 #

    господа. При попытке врубить мемкэш php падает с 500й ошибкой. при этом в логах появляется вот такая запись

    PHP Fatal error: Class 'waMemcachedCacheAdapter' not found in /var/www/sitename.ru/data/www/sitename.ru/wa-system/config/waAppConfig.class.php on line 66


    подскажите, где пилить

    • +2
      Silicoid Silicoid 23 января 2017 16:24 #

      Апд. Уже не актуально.
      я зевнул и вместо
      yum install php-pecl-memcached

      заинсталлил
      yum install php-pecl-memcache

      а такого драйвера нет


    • +2
      Владислав Владислав 31 мая 2017 03:17 #

      На VDS с ISPManager работает так

      <?php
      return array(
          'default' => array(
              'type' => 'memcached',
              'servers' => array(
                  array(
                      'host' => localhost, //укажите нужное значение
                      'port' => 11211, //укажите нужное значение
                  ),
              )
          )
      );
    • +2
      Владислав Владислав 31 мая 2017 04:50 #

      Установка memcached-сервера на Ubuntu через терминал

      apt-get install memcached

      Установка расширения PHP

      apt-get install php-memcached

      Перезагрузка сервера

      reboot

      Тестируем. Создайте файл PHP, например mem.php с содержимым:


      <?php
      
      $memcached = new Memcached();
      $memcached->addServer('localhost', 11211);
      
      $memcached->set('key', 'webasyst');
      
      echo $memcached->get('key'); // Если всё ок, то результат на экране выведет webasyst

      Откройте его в браузере, если memcached работает, вы увидите результат, если нет, ройте в поддержке

    • -1
      Site Site 20 февраля 2018 19:49 #

      Fatal error: Class 'Memcached' not found in /home/users/z/zmefxre/domains/..........ru/wa-system/cache/adapters/waMemcachedCacheAdapter.class.php on line 20


    • 0
      Site Site 20 февраля 2018 19:50 #

      Parse error: syntax error, unexpected '.0' (T_DNUMBER), expecting ')' in /home/users/z/zmefxrep/pimex/domains/..........ru/wa-config/cache.php on line 7

    • +1
      Site Site 21 мая 2018 12:22 #

      Для подключения к Memcached используйте следующий адрес сокета unix:///home/usersX/первая_буква_логина/логин/memcached/memcached.sock и порт 0.

      Здесь и далее X в имени директории usersX может быть целым числом (1, 2, ...) или вообще отсутствовать. Точное значение для вашего аккаунта уточняйте в разделе «Хостинг / Техподдержка / Техническая информация» контрольной панели аккаунта.

      Альтернативный вариант — использовать для подключения IP и порт Memcached-сервера. Для каждого аккаунта эти параметры различаются: их значение также можно узнать в разделе «Хостинг / Техподдержка / Техническая информация» контрольной панели аккаунта.

      Пример подключения к Memcached из PHP:

      <?php
      $m = new Memcache;
      $m->connect(
          'unix:///home/usersX/первая_буква_логина/логин/memcached/memcached.sock',
          0
      );
      $m->set('key', 'value');
      echo $m->get('key');
      ?>

      Аналогичный пример на языке Python:

      import memcache
      m = memcache.Client([
          'unix:///home/usersX/первая_буква_логина/логин/memcached/memcached.sock'
      ])
      m.set('key', 'value')
      print m.get('key')

      И на Perl:

      use Cache::Memcached;
      my $m = Cache::Memcached->new({servers => [
          '/home/usersX/первая_буква_логина/логин/memcached/memcached.sock'
      ]});
      $m->set('key', 'value');
      print $m->get('key'); 

      С более подробной документацией вы можете ознакомиться здесь: PHP, Python, Perl.

    • +1
      Болобан Алексей Болобан Алексей 3 апреля 2020 21:28 #

      Здравствуйте. "Для включения создайте файл wa-config/cache.php" - напишите, пожалуйста, подробнее путь где создавать файл.

      • +1
        Михаил Ушенин Михаил Ушенин 8 апреля 2020 09:21 #

        Это и есть путь к файлу — относительно директории, в которой установлен Webasyst на вашем сервере. Уточните путь к этой директории в службе поддержки хостинга.

      • +1

        Напишите, пожалуйста, что писать в файле wa-config/cache.php при подключении через сокет.

        Вот такая конструкция не работает:

        <?php
        return array(
            'default' => array(
                'type' => 'memcached',
                'servers' => array(
                    array(
                        'host' => 'unix:///bhome/part3/03/vh52005/memcached.sock', //укажите нужное значение
                        'port' => '0', //укажите нужное значение
                    ),
                )
            )
        );

        • +1
          Михаил Ушенин Михаил Ушенин 15 февраля 2021 17:51 #

          Выглядит правильно. Поищите причину в чём-то другом: или путь указан неверный, или, может быть, расширение memcached не установлено на сервере.

          • +1
            Barkin Charlie Barkin Charlie 18 февраля 2021 23:10 #

            Неправильно. путь с  "unix://" корректен  для модуля memcache, а для memcached следует использовать без "unix://"

            https://www.php.net/manual/ru/... - предпоследний комментарий.

            Риторический вопрос - почему программисты никогда не читают документацию? :)

          • +1
            Петренко Дмитрий Петренко Дмитрий 18 февраля 2021 13:25 #

            Скажите пожалуйста кто нибудь настраивал работу memcached через сокет? Наш хостинг-провайдер не поддерживает работу через порты, только через сокет. ТП вебасист ничего не слышала от таком варианте настройки. по этой причине и обращаюсь сюда, может кто из коммюнити делал - поделитесь опытом

          • +4
            Виталий Виталий 25 мая 2021 21:11 #

            Сервер NVMe. Установил сервер мемкешд (256 выделил оп), включил расширения, с помощью плагина Memcached добавил и видимо проверил наличие сервера и данные подключения + проверил файлом в корне. Вроде работает. Однако: 1. Не заметил никаких изменений в пэйджспид гугла. 2. В вебмастере страница категории стала загружаться (ответ сервера) со значениями от 590 до 1900 в произвольном порядке, чаще диапазон 900-1600 мс. С выключенным плагином ответ 360-590 мс. Что-то может быть сделано не так? Или такой результат тоже возможен? Или такое кэширование не подходит для категорий, списков...

          • +1
            Greg Greg 24 июня 2022 10:31 #

            Можно поподробнее про параметр Namespace (Укажите произвольный идентификатор в значении ключа 'namespace', чтобы избежать конфликтов при использовании нескольких сайтов на одном сервере.) что значит произвольный идентификатор, просто поставить 123 и все будет работать?

            • +1
              Михаил Ушенин Михаил Ушенин 24 июня 2022 10:57 #

              Напишите любую строку — на всякий случай латинскими буквами. Этого должно быть достаточно.

              Добавить комментарий

              Чтобы добавить комментарий, зарегистрируйтесь или войдите

              Раздел помощи работает на основе приложения «Хаб»