回答:
使用できる特定のキャッシュビンを1つまたは2つだけ消去したい場合cache_clear_all()
(スクリプトにDrupalがブートストラップされていると想定):
cache_clear_all(NULL, 'cache_views');
cache_clear_all(NULL, 'cache_views_data');
スクリプトを実行している場合は、おそらくDrushを使用することでメリットが得られます。Drushのphp-evalコマンドとphp-scriptコマンドを使用すると、Drupalのブートストラップ後に簡単にphpコードのスニペット(この質問の他の回答に示されている例など)を呼び出すことができます。Drushがなければ、Webサービスをセットアップし、wgetまたはcurlを使用してコードを実行するか、Drupalブートストラップコードを自分で呼び出そうとする必要があります。さらに良いことに、Drushにはキャッシュをクリアするための組み込みコマンドが付属しているので、スクリプトからやりたいことがすべてであれば、phpコードの記述について心配する必要はまったくありません。ただ使用する:
cd /path/to/drupal/sites/default && drush cache-clear all
また、サイトのエイリアスについて知りたい場合もあります。@siteと呼ばれるエイリアスを定義する場合は、代わりに次を使用できます。
drush @site cache-clear all
drush cc views
適切なアクセス権を持つユーザーとしてスクリプトを試してください。
drush cc views
。ただし、Drushコマンドは通常、アクセスチェックなしでAPI関数を直接呼び出します。通常、ユーザーを指定する必要はありません。
メニューを登録して外部から呼び出すことをお勧めします。そのコールバックでは、コードを挿入します(キャッシュをクリア)
function yourmodule_menu() {
$items = array();
$items['customclearcache'] = array(
'title' => 'clear cache',
'description' => 'clear cache',
'page callback' => 'yourmodule_clear_cache',
'access callback' => TRUE , // or any access you need
);
return $items;
}
function yourmodule_clear_cache(){
cache_clear_all(NULL, 'cache_views');
cache_clear_all(NULL, 'cache_views_data');
drupal_set_message(t('cache clearing completed'));
drupal_goto("node"); // or any page you want
}
また、次のURLを呼び出すことでキャッシュをクリアできますyoursite.com/customclearcache
。
また、drush
クリアキャッシュをインストールした場合drush cc all
//first go to your installed site path
$cd /path/to/drupal
$drush cc all
外部からキャッシュをクリアする最良の方法は、Drushコマンドを使用することです。
あなたはdrush cc
ターミナルで使うことができ、それはあなたが正確に何をクリアしたいかを尋ねます。例ではそれは要求します:
数値を入力して、クリアするキャッシュを選択します。
[0] : Cancel
[1] : all
[2] : drush
[3] : theme-registry
[4] : menu
[5] : css-js
[6] : block
[7] : module-list
[8] : theme-list
[9] : registry
[10] : views
オプションを選択すると、外部からキャッシュをクリアできます。
drushとそのコマンドの詳細については、drush GitHubページにアクセスしてください。
外部からキャッシュをクリアしたい場合、最も簡単な方法はを使用することdrush
です。例えば:
drush -y cc all
すべてのDrupalキャッシュをクリアします(ただし、すべてのキャッシュをクリアするわけではありません)。Drupalの8では:drush cr
。
他の方法はcache_
、たとえば次のワンライナーを使用して、で始まるすべてのテーブルを切り捨て/削除する単純なスクリプトを書くことです。
echo "SHOW TABLES LIKE 'cache%'" | drush sqlc --extra=--skip-column-names | xargs -L1 -I% echo "DELETE FROM %;" | drush sqlc --extra=-v
TRUNCATE
cache_views
データベース内のテーブル。