web-dev-qa-db-ja.com

外部からキャッシュをクリアする方法は?

外部スクリプトを使用してキャッシュをクリアする方法を教えてください。私は毎晩ノードを追加するスクリプトがあり、自分でMySQLクエリを作成する必要なく、ビューキャッシュをクリアしたいのですが。

6
Daniel Holm

1つまたは2つの特定のキャッシュビンをクリアするだけの場合は、 cache_clear_all() を使用できます(スクリプトにDrupalブートストラップされていると想定))。

cache_clear_all(NULL, 'cache_views');
cache_clear_all(NULL, 'cache_views_data');
7
Clive

スクリプトを実行している場合は、おそらく 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
10
greg_1_anderson

メニューを登録して外部から呼び出すことをお勧めします。そのコールバックでは、コードを挿入します(キャッシュをクリア)

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
6
Yusef

外部からキャッシュをクリアする最良の方法は、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ページ にアクセスしてください。

0
Nitesh Sethia

キャッシュを外部でクリアしたい場合、最も簡単な方法は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 
0
kenorb