OpenCart и Redis

Начал осваивать для общего развития популярную CMS opencart и решил сразу внести некоторые действия по оптимизации производительности системы. Я взял третью ветку за основу и я хотел положить кэш и сессии в redis.

Хостинг я выбрал beget, в связи с тем, что он один из лучших хостеров России, а так же из коробки поддерживает Redis сервер (включается в сервисах панели управления).

С кэшем мне повезло, третья версия умеет это из коробки, достаточно прописать нужные настройки, для этого нужно прописать константы в config.php и admin/config.php:

И в настройках по умолчанию system/config/default.php указать движок для кэша

С сессиями оказалось чуть сложнее, так как механизм сессий у opencart свой и настройка в php никак не влияет на неё. По умолчанию админка хранит сессии в файлах, фронт часть хранит в БД и эти 2 драйвера доступны, но нам надо в redis.

Для этого был написан простенький класс system/library/session/redis.php:

И поменять настройки для фронт и бэк части system/config/catalog.php и system/config/admin.php:

На данном этапе все приготовления выполнены, сессии и кэш хранятся в оперативной памяти, что обеспечивает максимальную скорость считывания к «горячим» данным.

12 thoughts on “OpenCart и Redis

    1. aisamiery Автор записи

      Боюсь что я не проверял и с данной мажорной веткой не работал.
      Это все я проделывал на третьей (opencart 3), последний на текущей момент ветки.

  1. Артур

    Не завелось. В админку входит, но сессию в redis не записывает.
    Хотя обычные все пишет:
    1) «oc_stock_status.1»
    2) «oc_seopro.keywords»
    3) «oc_category.all.1.0»
    4) «oc_seopro.cat_tree»
    5) «oc_tax_class»
    6) «oc_weight_class.1»
    7) «oc_cmsblock.1»
    8) «oc_admin.language»
    9) «oc_zone.176»
    10) «oc_store»
    11) «oc_country.admin»
    12) «oc_manufacturer.0.1»
    13) «oc_currency»
    14) «oc_catalog.language»
    15) «oc_order_status.1»
    16) «oc_length_class.1»
    17) «oc_seopro.queries»
    18) «oc_voucher_theme.1»
    19) «oc_seopro.product_categories»

    Версия ocStore 3.0.2.0
    php 7.2

    1. aisamiery Автор записи

      Если бы сессии не писались куда либо, то было бы не зайти в админку. Скорее всего механизм хранения не изменился

  2. Дмитрий

    У меня не заработало на чистом ocStore 3.0.2.0 и на OpenCart 3.0.3.2. Пробывал на хостинге и на Open Server в связке с Nginx + PHP-FPM 7.2/7.0 и Redis (3 разные версии).

    1. Дмитрий

      Правда, не работают только сессии. Не пойму что не правильного в вашем коде?

      1. aisamiery Автор записи

        мой код взят с сайта на котором работает, скорее всего что то с настройками ПО. В логах при этом что нибудь есть?

  3. Rend

    При входе создается сессия в redis, и через несколько секунд удаляется из redis.
    Делал всё по инструкции.

    1. aisamiery Автор записи

      Скорее всего проблема в $this->expire и там очень маленькое значение. Поправил статью

      1. Алексей

        Коллеги, здравствуйте.

        Почему-то Redis не кэширует категории с большим количеством товаров.
        OcStore 3.0.2.0

        Не подскажите, всё сделал по инструкции

        Заранее большое спасибо за помощь.

        1. aisamiery Автор записи

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *