Помощь Страница импорта в админке ищет APC-cache, несмотря на то, что "Использовать кеширование" отключено.

Тема в разделе "PrestaShop", создана пользователем Byteman, 28 дек 2018.

Метки:
Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. Byteman

    Byteman

    Регистр.:
    18 мар 2008
    Сообщения:
    413
    Симпатии:
    202
    Здравствуйте!

    Ситуация такая.

    Магазин на Prestashop 1.7.2.4.

    Раньше на сайте был включен php-fpm 7.0 и установлен и активирован APCu.
    В какой-то день в админке магазина я отключил вообще опцию "Использовать кеширование",
    так как после экспериментов с использованием memcached, а затем APCu,
    пользы не увидел, но происходили какие-то непонятные глюки периодически.

    Через какое-то время я перевёл сайт на php-fpm 7.1 без APC.
    Сегодня я кликнул в меню админки на "Импорт" и загрузилась страница ошибки следующего содержания:

    Код:
    
    [PrestaShopException]
    
    APC cache has been enabled, but the APC or APCu extension is not available
    at line 43 in file classes/cache/CacheApc.php
    
    38.      * CacheApcCore constructor.
    39.      */
    40.     public function __construct()
    41.     {
    42.         if (!extension_loaded('apc') && !extension_loaded('apcu')) {
    43.             throw new PrestaShopException('APC cache has been enabled, but the APC or APCu extension is not available');
    44.         }
    45.         $this->apcu = extension_loaded('apcu');
    46.     }
    47.
    48.     /**
    
        CacheApcCore->__construct - [line 131 - classes/cache/Cache.php]
        CacheCore::getInstance - [line 343 - classes/db/Db.php]
        DbCore->enableCache - [line 4358 - controllers/admin/AdminImportController.php]
        AdminImportControllerCore->postProcess - [line 194 - classes/controller/Controller.php]
        ControllerCore->run - [line 379 - classes/Dispatcher.php]
        DispatcherCore->dispatch - [line 95 - admin/index.php]
    
    
    Получается classes/cache/CacheApc.php производит проверку установлено ли и активировано ли php-расширение APC или APCu, несмотря на то, что опция "Использовать кеширование" отключена:

    upload_2018-12-28_14-52-42.png

    Простая очистка кэша на страничке "Производительность" админки магазина проблему не решает.

    Почему так происходит и как это поправить?
     
    Последнее редактирование: 28 дек 2018
  2. Quant

    Quant Создатель

    Регистр.:
    22 май 2013
    Сообщения:
    22
    Симпатии:
    27
    Посмотри упоминание APC в /app/config/parameters.php. Если есть, замени на
    Код:
    'ps_caching' => 'CacheMemcache',
        'ps_cache_enable' => false,
     
    Byteman нравится это.
  3. Byteman

    Byteman

    Регистр.:
    18 мар 2008
    Сообщения:
    413
    Симпатии:
    202
    Спасибо. Это баг престы такой?

    Там сейчас есть следующее:
    Код:
        'ps_caching' => 'CacheApc',
        'ps_cache_enable' => false,
    Вопросы появились:

    1. 'ps_caching' => 'CacheMemcache' или 'ps_caching' => 'CacheMemcached' - c d на конце?
    У меня активирован memcached. Упоминаний о memcache без d на конце phpinfo() не выдаёт.

    2. Обязательно ли переводить кэшинг на CacheMemcache или CacheMemcached?

    Хотелось бы смысл понять.
    Нельзя ли просто эту строку откомментировать или поставить что-то типа: 'ps_caching' => '' ?
     
  4. Quant

    Quant Создатель

    Регистр.:
    22 май 2013
    Сообщения:
    22
    Симпатии:
    27
    Как бы кеш пытается создаться всегда, если это у него получается (задано в настройках).

    1. Не важно. Просто эти классы не бросают исключения если расширения не установлены (вроде).
    2. Лучше пока не использовать ни то ни другое. Отключить (напишите зачем он вам).
    Строка 'ps_caching' должна быть заполнена и валидна вашим классам кеширования (/classes/cache/)
     
    alpi, Byteman и _sashok нравится это.
  5. Byteman

    Byteman

    Регистр.:
    18 мар 2008
    Сообщения:
    413
    Симпатии:
    202
    Спасибо, всё работает в обоих случаях ( 'ps_caching' => 'CacheMemcache', или 'ps_caching' => 'CacheMemcached', ) ,
    но только после удаления кэша по фтп ( /app/cache/prod ), иначе вначале ошибку выдаёт.

    И да, кэширование у меня отключено.
    После некоторого опыта сначала с MemCached, а затем с APCu, не увидел никакой пользы, кроме непонятных глюков.
     
    alpi нравится это.