очистить кеш друпала - скрипт php - PullRequest
2 голосов
/ 08 марта 2011

Я пишу php-скрипт, который позволит людям менять тему своего сайта на drupal.Пока все хорошо, но последнее, что я не мог понять.Каждый раз, когда я отправляю форму, база данных меняется, но тема не меняется.По-видимому, я должен очистить кэш также.Я нашел это на веб-сайте Drupal:

<?php include_once './includes/bootstrap.inc'; drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); drupal_flush_all_caches(); ?>

Я должен сделать небольшой файл 'clear.php' с этим сценарием, и каждый раз, когда я хочу очистить кеш, я долженперейти к этому файлу и очистить кэш ...

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

Есть идеи?Или есть другие способы очистки кэша Drupal с помощью php?

Заранее спасибо!

Ответы [ 4 ]

3 голосов
/ 08 марта 2011

несколько советов:

  • Почему бы не вызвать drupal_flush_allcaches(); в хуке _submit вашей формы? тогда вам не нужно загружаться.
  • Также вы можете создать пункт меню с обратным вызовом функции в пользовательском модуле с помощью hook_menu и затем поместить туда свой фрагмент. Снова без необходимости начальной загрузки.

  • Если вам действительно нужен отдельный скрипт, поместите его в корневую папку вашей установки и затем вызовите mysite.com/clear.php. Если вы поместите его куда-нибудь еще, вам следует изменить путь на bootstrap.inc (потому что это относительный путь)

  • Не очищайте все кэши, когда вам нужно сбросить только 1 из них: Попробуйте cache_clear_all('theme_registry', 'cache', TRUE);
1 голос
/ 08 марта 2011

Тадаа, сделал это:)

Просто вставьте этот кусок op php в мой скрипт:

$deletecachesql = "DELETE FROM cache"; $deletecachequery = mysql_query($deletecachesql) or die ("error").mysql_error(); $deletecacheresult = mysql_fetch_array($deletecachequery);

Скрипт очищает кеш, но я 'Я не уверен, что это хорошая вещь.Сайт также сказал мне, чтобы удалить:

  • УДАЛИТЬ ИЗ КЭША;
  • УДАЛИТЬ ИЗ Cache_menu;
  • УДАЛИТЬ ИЗ Cache_filters;
  • УДАЛИТЬ ИЗ КЭША;
  • УДАЛИТЬ ИЗ сторожевого таймера;

Это мудрый поступок?Очистить (удалить) кеш как этот?

0 голосов
/ 21 марта 2014

Будьте осторожны с программной очисткой кеша с помощью mysql-операторов.

Это может привести к поломке всего реестра drupal, и вы можете получить пустую страницу на начальной загрузке drupal, поэтому даже drush может потерпеть неудачу.

Единственный способ исправить это снова - использовать отсюда «registry_rebuild»: https://drupal.org/project/registry_rebuild

Вчера я пытался очистить кеш вручную и в результате все закончилось.Я настоятельно рекомендую продолжать использовать такие вещи, как:

cache_clear_all(NULL, 'cache_page');
OR
drupal_flush_all_caches();
0 голосов
/ 08 марта 2011
...