外部スクリプトを使用してキャッシュをクリアする方法を教えてください。私は毎晩ノードを追加するスクリプトがあり、自分でMySQLクエリを作成する必要なく、ビューキャッシュをクリアしたいのですが。
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 bootstrap codeを自分で呼び出す必要があります。さらに良いことに、Drushにはキャッシュをクリアするための組み込みコマンドが付属しているので、スクリプトからやりたいことがすべてある場合は、phpコードの記述について心配する必要はありません。
cd /path/to/drupal/sites/default && drush cache-clear all
また、サイトのエイリアスについて学習することもできます。 @siteと呼ばれるエイリアスを定義する場合は、代わりに次を使用できます。
drush @site cache-clear all
メニューを登録して外部から呼び出すことをお勧めします。そのコールバックでは、コードを挿入します(キャッシュをクリア)
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キャッシュ(ただし all caches ではない)がすべてクリアされます)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