Per svuotare la cache di Drupal esistono molti modi. Si possono svuotare le tabelle cache attraverso l'interfaccia utente, oppure con lo script Drush, oppure con uno script PHP personalizzato che richiama la funzione drupal_flush_all_caches()
.
Un altro modo è quello di svuotare manualmente le tabelle dal database. I metodi classici non sempre prevedono l'eliminazione di tutti i contenuti di tutte le tabelle cache (vedi ad esempio la tabella cache_form
).
In alcuni casi però può servire un reset completo di tutte queste tabelle, o comunque può essere necessaria una alternativa.
Ecco quindi un semplice esempio di comando Bash one line per svuotare completamente tutte le tabelle cache di Drupal che hanno come prefisso "cache_
".
echo "select concat('TRUNCATE TABLE ', table_name, ';') AS '' FROM information_schema.tables WHERE table_name LIKE 'cache_%' AND table_schema LIKE 'NOMEDATABASE';" | mysql --user=USERNAME --password=PASSWORD | mysql --user=USERNAME --password=PASSWORD --database=NOMEDATABASE
Il comando è un po' lunghetto, ecco quindi la spiegazione di come è composto.
Visto che in ogni installazione le tabelle possono essere diverse in base ai moduli, come prima cosa è necessario identificarle per poter quindi lanciare il comando TRUNCATE
.
Quindi il primo comando è la query che serve per elencare tutte le tabelle che cominciano con "cache_
" del database nel quale si sta lavorando:
echo "select concat('TRUNCATE TABLE ', table_name, ';') AS '' FROM information_schema.tables WHERE table_name LIKE 'cache_%' AND table_schema LIKE 'NOMEDATABASE';"
Il secondo comando esegue questa query e restituisce le singole query per svuotare le diverse tabelle selezionate.
Il terzo comando prende in ingresso queste query e le esegue, svuotando quindi ogni tabella cache.
Attenzione: questa guida è solo un esempio ed il comando illustrato va adattato in base alle proprie esigenze. Inoltre non mi prendo alcuna responsabilità se seguendo questa procedura eliminate o danneggiate dati.
Grazie per l'articolo,
molto interessante la possibilità di svuotare la cache in modo programmato con il PHP senza mettere direttamente mano al database
Grazie, ho iniziato da poco a studiare il CMS Drupal e questo blog è veramente molto utile. Le guide per Drupal, i trucchi ed i suggerimenti sono sempre molto ben fatti!