Как очистить кеш программно в Drupal 8

Я работаю на сайте Drupal 8. Этот сайт работал. Я недавно переехал на другую машину. Это показывает ошибки как:

Recoverable fatal error: Argument 1 passed to 

Drupal\Component\DependencyInjection\Container::__construct() must be of

 the type array, boolean given, called in [DRUPAL-

PATH]/core/lib/Drupal/Core/DrupalKernel.php on line 883 and defined in 

[DRUPAL-PATH]/core/lib/Drupal/Component/DependencyInjection/Container.php

 on line 119 #0 [DRUPAL-PATH]/core/includes/bootstrap.inc(550): 

_drupal_error_handler_real(4096, 'Argument 1 pass...', 

'/Applications/M...', 119, Array)

Мне нужно очистить кеш программно.

Но я не нашел помощи.

Может ли какой-нибудь эксперт помочь мне?

5 ответов

Решение

По SQL

TRUNCATE `cache_bootstrap`;
TRUNCATE `cache_config`;
TRUNCATE `cache_container`;
TRUNCATE `cache_data`;
TRUNCATE `cache_default`;
TRUNCATE `cache_discovery`;
TRUNCATE `cache_dynamic_page_cache`;
TRUNCATE `cache_entity`;
TRUNCATE `cache_menu`;
TRUNCATE `cache_render`;
TRUNCATE `cache_rest`;
TRUNCATE `cachetags`;
TRUNCATE `cache_toolbar`;

По Drush

drush cr all

Попробуйте ниже.

cache_clear_all() // For Drupal-7

drupal_flush_all_caches() // For Drupal-8

Если вы хотите очистить определенный кеш, например кеш рендеринга, вы можете запустить следующий код:

\Drupal::service('cache.render')->invalidateAll()

Если вы хотите очистить весь кеш, попробуйте:

drupal_flush_all_caches()

Следующие службы реализуют CacheBackendInterface и имеет invalidateAll() метод, который помечает все элементы кеша как недопустимые:

cache.bootstrap
cache.config
cache.data
cache.default
cache.discovery
cache.entity
cache.menu
cache.render
cache.static

На всякий случай, если кто-то ищет способ очистить кеш всех представлений:

      views_invalidate_cache();

твой друг!

Программно с использованием PHP просто используйте этот метод там, где вы хотите очистить кеш:

      drupal_flush_all_caches();

есть также другие методы очистки кешей, используя:

По пользовательскому интерфейсу администратора

Перейдите в / admin / config / development / performance и нажмите кнопку «Очистить все кеши».

Автор Drush

      drush cache-rebuild
//or you can use
drush cr

По update.php Запустите update.php (/update.php) - еще один способ очистки кеша.

С помощью SQL Удалите все данные внутри таблиц, которые начинаются с "cache_" следующим образом:

      TRUNCATE cache_config;
TRUNCATE cache_container;
TRUNCATE cache_data;
TRUNCATE cache_default;
TRUNCATE cache_discovery;
TRUNCATE cache_dynamic_page_cache;
TRUNCATE cache_entity;
TRUNCATE cache_menu;
TRUNCATE cache_render;
TRUNCATE cache_toolbar;

Другие методы:

      $variables['#cache']['max-age'] = 0;

\Drupal::service('page_cache_kill_switch')->trigger();

cache_clear_all() // For Drupal-7

drupal_flush_all_caches() // For Drupal-8

Если вы хотите очистить определенный кеш, например кеш рендеринга, вы можете запустить следующий код:

      \Drupal::service('cache.render')->invalidateAll();

Если вы хотите очистить определенный кеш, например кеш маршрута, вы можете запустить следующий код:

      \Drupal::service("router.builder")->rebuild();
Другие вопросы по тегам