Автор Тема: Warning: Cannot use a scalar value as an array in classes/cache/Cache.php  (Прочитано 898 раз)

09 Декабрь 2018, 00:18:32
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Здравствуйте.
Периодически в админке сайта в разных разделах появляется ошибка.

Warning: Cannot use a scalar value as an array in classes/cache/Cache.php

Symfony\Component\Debug\Exception\
ContextErrorException
in classes/cache/Cache.php (line 453)
if ($tables = $this->getTables($query)) {
  foreach ($tables as $table) {
     $this->initializeTableCache($table);
      if (isset($this->sql_tables_cached[$table][$key])) {
         $this->sql_tables_cached[$table][$key]['count'] += $count;
         $changedTables[$table] = true;                   
      }               
  }           
}       
}

В строке: $this->sql_tables_cached[$table][$key]['count'] += $count;

На сайте включено кеширование через memcached .
Полагаю это от переполнения кеша , то есть не хватает оперативы для кеша.
Т.к. после очистки кеша memcached через консоль ошибка пропадает, но периодически возникает снова.

Может кто сталкивался, как решили?
09 Декабрь 2018, 12:32:01
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
А что можно сделать кроме как увеличить размер  memcached?
09 Декабрь 2018, 13:46:02
Ответ #2
  • Пользователь
  • **
  • Сообщений: 92
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
А что можно сделать кроме как увеличить размер  memcached?

Проблема в том что на хостинге под  memcached максимум можно выделить 128 МБ и больше я поставить не могу.
Общая выделенная оперативная память 725МБ

Пока переписал условие:

if (isset($this->sql_tables_cached[$table][$key])) {
на
if (isset($this->sql_tables_cached[$table][$key]) && is_array($this->sql_tables_cached[$table][$key])) {
Помогло, никаких побочных эффектов пока не заметил