Opencart3 и MYSQLI_Memcached (Memcached Speed Booster) драйвер проблемы

Тема в разделе "Общие вопросы", создана пользователем AndreyPopov, 28 окт 2019.

  1. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    ну у меня на хостинге два ядра доступны, а redis не умеет многопоточно работать, потому у себя остановилcя не memcached

    P.S. тем более везде пишут, что redis по скорости работы приближается к memcache, а основным преимуществом является работа со списками.

    добавил все таблицы order_, customer_, address и api_
    кэш тоже чистил и не только memcache
    но попробую еще раз, может не дочистил.
     
    Последнее редактирование: 15 ноя 2019
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.065
    Важно не то что "добавил", а то что вы проверяете. Если внимательно посмотрите на последний код который я привел, там есть символ ` и именно он и есть в запросе. В общем проверяйте именно запрос, а не просто вставив таблицу.
     
  3. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.065
    Проверил кстати. Заказы редактируются.
     
  4. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    пока отложил исследование и решение этого вопроса, потому что возникла проблема с логином и регистрацией на странице заказа из-за конфликта модулей Journal и D-Seo.

    как оказалось около 80% покупателей, с начала накидывают товар в корзину и только на странице оформления заказа регистрируются или входят в аккаунт.


    ну и как водится авторы модулей начинают с того, что пиняют друг на друга :(
     
  5. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.065
    Поэтому как писалось выше, в вашем случаи просто кешировать отдельные запросы и будет все работать. Скорей всего у вас настолько все изменено в запросах, что вы просто неправильно указываете сам запрос, так как его не видите и не знаете как посмотреть.
     
  6. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    сейчас в драйвере вот это прописано:

    PHP:
      $select_id = (<= stripos($sql'SELECT') ) ? sha1($sql) : false;
     
      if (
    stripos($sql'FROM ' DB_PREFIX 'cart'))  $select_id false;


      if (
    stripos($sql'FROM `' DB_PREFIX 'session'))  $select_id false
    пользователи входят, создают заказы
    заказы в админке редактируются

    но …. теперь такой глюк - под Гостем не дает создавать заказы

    при отправке заказ ругается, что не указан e-mail, хотя он указан.
    при чем СМС уведомление приходит о заказе, в базу информация прописывается без указания кто сделал заказ
    создан новый заказ.
    но при этом в самих заказах его не видно.
     

    Вложения:

  7. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.065
    Вполне возможно. Например можно добавить
    PHP:
            if (stripos($sql'FROM ' DB_PREFIX 'customer'))  $select_id false;
            if (
    stripos($sql'FROM ' DB_PREFIX 'setting'))  $select_id false
    А можно еще что то. Если не можете правильно определить мешающий запрос (!!! именно запрос, а не таблицу) то проще плясать от обратного, т.е кешировать только нужные запросы. Не забываем при этом после изменений сбрасывать кеш мемкеша полностью (не перезапуском, а именно сбросом... почитайте доку.)
     
  8. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    на тестовом сайте вообще возникла какая-то "непонятка".

    по умолчанию в настройках уведомлений стояла отправка Mail
    на рабочем стоит SMTP.

    попробовал на тестовом поставить SMTP - теперь на тестовом все время ругается на мыло, даже если снова вернуть Mail

    да, кэш чищу постоянно. у меня у хостера в панеле управления это есть
    memcache_full.jpg

    memcache_clear.jpg
     
    Последнее редактирование: 20 ноя 2019
  9. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    если в настройках уведомлений стоит Mail - заказы оформляются

    если стоит SMTP - выскакивает ошибка
     
  10. Hunter-38

    Hunter-38 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Чем в итоге все закончилось?
     
  11. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    оставил уведомления по Mail и прописал исключения для запросов.

    вот уже два месяца трудится в таком варианте.
     
    Hunter-38 нравится это.
  12. Hunter-38

    Hunter-38 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Напомните пожалуйста название модуля, он платный или как?


     
  13. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    в первом посте темы все данные есть (бесплатный)
     
  14. Hunter-38

    Hunter-38 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Да, скачал, поставил, в конфигах внес коррективы, единственно в доках сказано
    3. Change your cache driver to null (index.php)

    Но у меня в этом файле:
    так куда прописать П.3 ?
    Код:
    <?php
    // Version
    define('VERSION', '2.3.0.2');
    
    // Configuration
    if (is_file('config.php')) {
        require_once('config.php');
    }
    
    // Install
    if (!defined('DIR_APPLICATION')) {
        header('Location: install/index.php');
        exit;
    }
    
    // Startup
    require_once(DIR_SYSTEM . 'startup.php');
    
    start('catalog');
     
  15. Hunter-38

    Hunter-38 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Разобрался, очень глючный модуль, прибавки прям так уж акк нахваливают нет, процентов 15 не более, и все кеширует, что попало в кеш там и остается, даже смена дизайна, пипец... пока не презагрузиш сам сервис мемкеша... Не, на продакшн не пойдет, рискованно, да, еще и ошибки вылезают в модальном окне когда пытается зарегится....
     
  16. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    если читали внимательно, то это изменять надо в system/config/default.php
    но …..
    это не обязательно
    во-первых OpenCart 3.0 вообще НЕ принимает имя null, потому его лучше изменить на nocache.php
    во-вторых там лучше прописать стандартный драйвер memcache



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




    у кого как, все зависит от размера базы данных,количества записей и количества запросов.
    там где двести товаров и все на SSD диска - то вы прироста может вообще и не заметить. у меня 3500 товаров.


    исключайте таблицы из кэширования.

    кэшировать надо только статические данные, те которые перезаписываются во время работы пользователя надо исключать из кэширования.
     
    Последнее редактирование: 15 янв 2020
    Hunter-38 нравится это.
  17. Hunter-38

    Hunter-38 Новичок

    Сообщения:
    12
    Симпатии:
    0
    Благодарю!
    PS да, оперативки много, SSD диски, шустрый сервер в целом

     
  18. AndreyPopov

    AndreyPopov Пользователь

    Сообщения:
    49
    Симпатии:
    8
    google_console_speed.jpg ну вот можно сказать, что время отклика сайта драйвер все же поднял, что подтверждает тот же Google Search Console
     
  19. Ravilr

    Ravilr Специалист

    Сообщения:
    3.879
    Симпатии:
    1.065
    Конечно поднимает. Когда много товаров и сложных запросов, а они закешированы, то естественно и отклик быстрее.
     
  20. Arson66

    Arson66 Новичок

    Сообщения:
    1
    Симпатии:
    0
    Добрый день, подскажите пожалуйста
    добавил в Index.php
    // Cache
    $cache = new Cache('Null');
    $registry->set('cache', $cache);
    получаю:
    PHP7.0
    Ошибка: PHP message: PHP Fatal error: Cannot use 'Null' as class


    В папке system/config/default.php кроме index.html нет ничего
    в config.php
    define('DB_DRIVER', 'mysqli_memcached');

    порт в драйвер проставил
    При попытке найти через
    netstat -ltupn | grep memcached
    его не нахожу

    прошу подсказки по настройке,
    ОС Version 2.1.0.1 (rs.2)
    memcached support => enabled
    libmemcached version => 1.0.18
    Заранее благодарю