WordPress Database
Creare, gestire, ottimizzare e riparare il database MySQL di WordPress
di Bonaventura Di Bello
Sommario
Introduzione WordPress e i database Il database dopo l'installazione di WordPress Backup manuale del database Backup con WP-DB-Backup Importazione e ripristino di un database er, il phpMy dentro WordPress Backup e ripristino del database da anel Modifica del database per migrazione sito Manutenzione del database Svuotare o eliminare le tabelle Pulizia del database con Garbage Collector La rimozione dei _transient Ottimizzare il database eliminando le revisioni Pulizia del database con WP-Optimize Pulizia del database con Smart Cleanup Tools Riparazione delle tabelle
Cos’è un database?
Prima di parlare dei motivi per cui WordPress richiede la presenza di un database per funzionare e affrontare o a o tutte le fasi che ci permetteranno di crearlo e gestirlo al meglio, è sicuramente utile chiarire il concetto di database per chi non conosce questa importante e onnipresente forma di archiviazione e consultazione dei dati.
Secondo la definizione del dizionario Sabatini-Coletti, un database è un "insieme di grandi quantità di informazioni tra loro omogenee, organizzato in modo da permettere una rapida ricerca al suo interno". Si tratta di una delle definizioni più chiare che si possano fornire riguardo a un database, e partiremo proprio da questa per chiarire nel modo più rapido possibile tutti gli aspetti legati all’argomento prima di ricollegarci all’ambito specifico di WordPress.
Praticità dei database
Per avere un’idea generale di un database (dall’inglese ‘base di dati’) senza entrare necessariamente nell’ambito informatico possiamo pensare a un elenco telefonico oppure al classico mobile a cassetti, o schedario, per l’archiviazione di cartelle in ordine alfabetico (quest’ultima immagine è molto cara agli americani e la ritroviamo spesso nelle icone e illustrazioni informatiche). In entrambi i casi la definizione tratta dal Sabatini-Coletti calza a perfezione, ma cosa distingue i due esempi pratici appena descritti da un database ‘digitale’, ovvero creato e gestito attraverso strumenti informatici?
La praticità che deriva dal memorizzare una notevole quantità di dati digitali sotto forma di database è principalmente nella flessibilità con cui potranno in
seguito essere consultati, riorganizzati e visualizzati: se nei due esempi dell’elenco telefonico e dello schedario eravamo costretti a procedere con una consultazione basata su un ordine necessariamente alfabetico e sequenziale, per esempio, avere gli stessi dati all’interno di un database elettronico significa poter individuare ogni singola informazione in base ad altri dati, per esempio il nome della via nel caso dell’elenco telefonico, oppure una data nel caso dello schedario, o persino utilizzando una parola qualsiasi come ‘chiave di ricerca’.
Database ‘flat’ e ‘relazionali’
Quando immaginiamo una serie di dati ordinati ci viene spontaneo pensare a una tabella con le sue righe e colonne e con le intestazioni in cima, seguite dall’elenco dei dati stessi, più o meno come quelli memorizzati in un registro o, anche più semplicemente, in una fattura o uno scontrino del supermercato. Quando le informazioni che dobbiamo gestire possono essere memorizzate all’interno di una singola tabella di questo tipo ci troviamo di fronte a un database ‘flat’ (traducibile con ‘piatto’, inteso come ‘lineare’), che può essere creato e gestito anche da programmi come Word o Excel che permettono infatti di compilare e ordinare delle tabelle di dati o condurre delle ricerche al loro interno. Questa forma di database è molto primitiva e non ha niente a che fare con quella dove l’efficienza di un particolare linguaggio o programma dedicato si rivela indispensabile: stiamo parlando dei database ‘relazionali’ dove appunto i dati sono organizzati in più tabelle che hanno fra loro delle ‘relazioni’ e permettono, quindi, ricerche anche complesse. Pensiamo, per esempio, all’elenco telefonico e proviamo a immaginare la possibilità di cercare tutti gli abbonati che hanno un certo cognome e abitano in una certa provincia, che sarebbe impossibile da condurre su carta o anche su un database ‘flat’.
Il linguaggio dei database
Per gestire i database sono stati sviluppati, nel corso del tempo, linguaggi e programmi specializzati che sono andati evolvendosi per consentire la manipolazione di strutture di dati sempre più complesse. Uno dei più longevi e diffusi fra questi linguaggi è SQL, sigla di Structured Query Language, ovvero linguaggio strutturato di interrogazione. Il termine ‘query’ viene utilizzato infatti per definire un comando impartito a un database, per esempio la ricerca e sostituzione di uno o più dati. Questo linguaggio è alla base di MySQL, il sistema di gestione dei database relazionali (Relational Database Management System o RDBMS in breve) utilizzato per i database di WordPress. Anche se non è fondamentale conoscere tutte queste nomenclature per usare WordPress e il suo database, è utile comunque sapere a cosa si riferiscono i termini tecnici che sicuramente incontreremo nell’utilizzo di questi strumenti.
Una tabella per ogni cosa
Come abbiamo visto, le informazioni di un database sono ‘strutturate’, e questa struttura comincia prima di tutto dalla singola tabella che li contiene, le cui righe e colonne ospitano i cosiddetti ‘campi’ del database ovvero le singole celle al cui interno viene incasellato un dato specifico. Tornando all’esempio dell’elenco telefonico, le colonne della tabella e le rispettive celle conterrebbero, per esempio, i singoli nomi, cognomi, nomi delle vie e delle città, i codici di avviamento postale, le sigle delle provincie, e ovviamente i numeri di telefono. Volendo creare una struttura ‘relazionale’, la tabella appena descritta potrebbe essere collegata (creando quindi una ‘relazione’) con un’altra tabella contenente, per esempio, i dati anagrafici degli abbonati, le cui tabelle avrebbero ancora una volta dei campi per nome, cognome e indirizzo, ma a queste si aggiungerebbero quelle della data e del luogo di nascita, del codice fiscale, e così via. Incrociando i dati delle due tabelle potremo così sapere, per esempio, quante persone oltre i cinquant’anni possiedono un’utenza telefonica in una certa provincia.
WordPress e i database
Anche se non abbiamo ancora risposto alla domanda fondamentale, ovvero perché mai WordPress debba richiedere la presenza di un database per funzionare, molti l’avranno già intuito. Come sappiamo, WordPress è un sistema di gestione dei contenuti (Content Management System o CMS), ovvero un’applicazione in grado di gestire informazioni che saranno poi condivise sul Web all’interno di un blog, di un sito o di un portale. Queste informazioni non si limitano soltanto ai contenuti stessi, che oltre a testo e immagini comprendono anche altri formati di documenti digitali (video, audio, ecc.) e altre informazioni come il formato e lo stile dei contenuti stessi, il link interni ed esterni ad altri contenuti, i dati relativi all’autore, alla categoria e alla data di pubblicazione (i cosiddetti ‘metadati’), e ovviamente alle informazioni gestite da WordPress si accompagnano tutte le sue impostazioni e quelle dei suoi componenti, ovvero temi e plugin.
Un database per ogni sito
Come vedremo nel processo di creazione del database necessario per l’installazione di WordPress, quest’ultimo ha bisogno di un database MySQL inizialmente vuoto, nel quale saranno appunto create le tabelle che conterranno tutti i dati del CMS che abbiamo già elencato e descritto. Ogni sito o blog basato su WordPress deve avere il suo specifico database, cui farà riferimento sin dal momento dell’installazione e per tutta la sua esistenza leggendo, scrivendo, modificando e cancellando i dati al suo interno. Molti di questi dati sono collegati fra loro, per esempio la tabella che contiene i dati degli utenti è collegata con quella dei contenuti e con quella dei commenti, visto che gli utenti sono spesso autori degli uni e degli altri. Nello stesso tempo, una gran parte dei dati presenti nel database fa riferimento a file e cartelle di WordPress fra cui quelle in cui sono conservate, per esempio, le immagini da noi caricate. In ogni caso è importante capire, per ora, che ogni sito o blog WordPress ha bisogno, per funzionare, di un solo database, anche se come vedremo più avanti i fornitori di hosting Web ne mettono sempre a disposizione diversi.
Database e hosting per WordPress
Quando acquistiamo uno spazio Web su cui ospitare il nostro sito, oppure ci viene fornito come omaggio contestualmente alla registrazione di un dominio, quasi sempre avremo a disposizione uno o più database da utilizzare per l’installazione di WordPress, compresi nella quota annuale dell’hosting, oppure la possibilità di crearne un certo numero usando gli strumenti disponibili nel pannello di gestione specifico dell’hosting stesso. In altri casi, per esempio per l’hosting su Aruba.it, i database sono da acquistare separatamente e richiederanno una diversa quota annuale per il rinnovo rispetto allo spazio Web. Esamineremo vari casi nello specifico per capire come creare dei database o gestire quelli che ci sono stati assegnati, ma per il momento è importante capire che questi database sono in ogni caso inizialmente vuoti, e che in seguito all’installazione di WordPress saranno riempiti con le tabelle che il CMS utilizza per funzionare.
Figura 7- Un gruppo di database MySQL forniti da Aruba.it con un pagamento annuale separato rispetto allo spazio Web, inizialmente vuoti
Database pronti per l’uso
Quando il fornitore di spazio Web (provider) ci fornisce dei database già pronti avremo sempre le informazioni fondamentali che ci occorrono per far sì che WordPress li utilizzi a partire dall’installazione. Queste informazioni si possono riassumere in quattro elementi, tutti importanti: il nome di ogni database (generalmente composto da lettere, numeri e un trattino basso), il nome dell’utente che può effettuare l’ () al database e gestirlo, la con cui quest’ultimo accede dal database e l’indirizzo dell’host su cui il database è ospitato; quest’ultimo viene spesso identificato semplicemente con localhost, ma può anche essere un indirizzo di rete (per es.62.149.150.151) oppure un indirizzo alfabetico (per es. mysql.nomedominio.it). Nel caso di Aruba.it (Figura 7) i nomi dei database, il nome per il , la e l’indirizzo (numerico, in questo caso) dell’host vengono inviati via email dopo l’acquisto del servizio. Nel caso del provider Tophost.it, invece, possiamo creare fino a quattro database usando l’apposito pannello (Figura 8), ottenendo la relativa al momento della creazione e usando come nome utente lo stesso del database e come indirizzo dell’host il formato mysql.nomedominio.it.
Figura 8 – Il pannello per la creazione dei database su Tophost.it, in questo caso sono stati creati già due database e ne restano solo altri due disponibili
Creare un database da anel
Alcuni fornitori di hosting, sia italiani che stranieri, utilizzano un’interfaccia di gestione dei servizi Web chiamata anel, e anche in questo caso è presente una serie di strumenti specifici per la creazione e gestione dei database MySQL, sia con modalità di creazione guidata sia manuale. In entrambi i casi si tratterà di individuare il pannello che contiene questi strumenti (generalmente identificato proprio dall’etichetta Database) e scegliere la procedura guidata (wizard) o, per i più esperti, quella manuale. Nel secondo caso la creazione del database e quella dell’utente saranno gestite separatamente, e per quest’ultimo dovremo ovviamente definire la relativa , ma si tratta comunque di una procedura abbastanza semplice in cui dovremo soltanto scegliere il nome del database, quello dell’utente e la di quest’ultimo (che potrà anche essere generata in automatico). Alla fine ci ritroveremo, come sempre, con le quattro informazioni relative al nuovo database che dovremo annotare e are in seguito a WordPress per l’installazione, ovvero il nome del database e quello dell’utente (che possono essere uguali), la di quest’ultimo e l’host.
Figura 9 – Il pannello di creazione e gestione dei database MySQL all’interno del anel di Dominiok.it
Creare un database da phpMy
Un altro metodo, un po’ meno intuitivo, per creare un database e il relativo utente è quello messo a disposizione dall’applicazione Web per eccellenza per i database MySQL, ovvero phpMy. Si tratta di un’applicazione in linguaggio PHP cui possiamo accedere in molti casi dal nostro pannello di hosting (Figura 9) oppure in altri casi con un link diretto se l’host lo prevede (per esempio quando è nel formato mysql.nomedominio.it), ma difficilmente avremo i privilegi per utilizzarla nella creazione di utenti e database; sarà infatti più comunemente usata, come vedremo più avanti, per gestire solo i database esistenti. Fa eccezione il caso in cui phpMy è utilizzata su un server locale, ovvero installato da noi sul computer per sviluppare e gestire siti WordPress offline, argomento che sarà trattato in altra sede.
Figura 10 – Un esempio di phpMy su server locale con le opzioni per creare database e utenti
Collegare WordPress al database
Ci sono due modi per comunicare a WordPress, nel caso di una installazione manuale, i dati relativi al database che abbiamo acquistato o creato. Il primo consiste nell’inserirli all’interno del file wp-config.php, che possiamo creare duplicando il file wp-config-sample.php già presente nella cartella di WordPress e rinominandolo togliendo –sample dal nome originale: in questo caso apriremo il file con un editor di testo o di codice e inseriremo appunto i quattro dati (nome database, nome utente, , host) nelle righe dove sono richieste (Figura 11), avviando poi l’installazione di WordPress dall’indirizzo del sito. Il secondo metodo consiste nell’inserire l’URL del sito nel browser e premere INVIO come se volessimo caricarlo, facendo in modo che sia WordPress stesso a chiederci tali dati. In entrambi i casi dovremo prima caricare, ovviamente, le cartelle e i file di WordPress sullo spazio Web che abbiamo a disposizione, ricordandoci di aggiungere il file wp-config.php come descritto se vogliamo usare il primo metodo. L’installazione di WordPress sarà comunque trattata in altra sede trattandosi di un argomento che richiede informazioni che esulano dal nostro discorso specifico sui database.
Figura 11 – Le righe del file wp-config.php in cui vanno inserite le informazioni relative al database acquistato o creato
Il database dopo l’installazione
Cosa succede al database vuoto dopo che abbiamo completato l’installazione di WordPress? Se abbiamo la possibilità di visualizzarne la struttura, per esempio usando il phpMy che abbiamo già descritto, vedremo che ora il database contiene una serie di undici tabelle (Figura 12), ovvero quelle create da WordPress durante la fase di installazione e che gli serviranno per memorizzare i contenuti da noi creati e le impostazioni e preferenze che definiremo sia nel CMS sia nei temi e nei plugin. Descriveremo brevemente più avanti il ruolo svolto da ognuna di queste tabelle, per chi volesse approfondire (non è assolutamente indispensabile conoscere questi dettagli per usare WordPress, ma possono tornare utili per il futuro), per ora ci limitiamo a dire che alle undici tabelle create da WordPress con l’installazione si aggiungeranno sicuramente, nel tempo, altre tabelle create principalmente dai plugin per conservare i loro dati di configurazione e di lavoro.
Figura 12 – Le undici tabelle inserite da WordPress nel database MySQL vuoto durante l’installazione
Le tabelle di WordPress
Sul sito ufficiale di WordPress è disponibile, in inglese, una pagina che descrive le singole tabelle create da WordPress nel database MySQL, che include anche un praticissimo diagramma di flusso (di cui vediamo un particolare nella Figura 13) in cui sono evidenti le relazioni fra una tabella e l’altra e sono visibile le righe di ogni tabella, che ne raccolgono e conservano i dati. Le tabelle wp_commentmeta e wp_comments, per esempio, contengono i dati relativi ai commenti, mentre wp_meta e wp_s quelli degli utenti, allo stesso modo wp_posts e wp_postmeta contengono i dati di articoli e pagine. La tabella wp_links, come suggerisce il nome, contiene i dati dei link presenti nel sito, mentre wp_, wp_term_relationship e wp_term_taxonomy sono collegate alle tassonomie, ovvero le categorie e i tag. Ultima, ma non meno importante, la tabella wp_ptions che contiene, appunto, i dati di configurazione principali di WordPress. Ricordiamo che il prefisso wp_ standard può e deve possibilmente essere sostituito da un diverso prefisso allo scopo di rendere WordPress meno soggetto agli attacchi informatici, come abbiamo già avuto di vedere nella guida alla sicurezza. Un’ultima nota (per i più curiosi) riguarda il suffisso meta, che indica la presenza dei cosiddetti metadati, ovvero dati aggiuntivi che possono aiutare a identificare meglio un contenuto oppure un utente (per esempio la data del compleanno di quest’ultimo) ma che sono utilizzati molto di rado.
Figura 13 – Una parte del diagramma di flusso del database di WordPress pubblicato sul sito di WordPress.org
Righe e colonne
Se abbiamo la possibilità di osservare, per esempio con phpMy (basta cliccare sul nome della tabella desiderata), il contenuto di ognuna delle tabelle di WordPress, scopriremo subito che sono composte da una serie di righe e colonne, che rappresentano i cosiddetti ‘campi’ del database, ovvero le celle in cui vengono memorizzati i dati da WordPress ma anche dai plugin, che spesso modificano appunto queste tabelle aggiungendo i loro stessi dati. Come abbiamo già avuto modo di sottolineare, una conoscenza approfondita della struttura di queste tabelle e del formato dei dati in esse memorizzati può essere utile solo a chi intendesse gestire da un punto di vista particolarmente tecnico (per esempio lo sviluppo di un plugin o di un tema) il database di WordPress; la loro manipolazione, inoltre, come si può intuire richiede anche una certa conoscenza del MySQL. Come vedremo più avanti, il database di WordPress può essere gestito in modo pratico e intuitivo anche limitandosi a utilizzare gli strumenti principali di phpMy e avvalendosi dell’aiuto di plugin specializzati.
Figura 14 – Le righe e colonne della tabella wp_options nel database di WordPress, si notino i ‘campi’ ovvero le celle contenente i singoli dati
Backup manuale del database
Prima di dedicarci alle operazioni di manutenzione e soprattutto ottimizzazione del database di WordPress è importante conoscere le modalità con cui possiamo crearne una copia di sicurezza (backup) da usare eventualmente per ripristinarlo in caso di emergenza. Se il nostro pannello di hosting non contiene alcuno strumento di backup specifico per il database possiamo ricorrere all’uso di phpMy, che come abbiamo visto è quasi sempre accessibile dallo stesso pannello di hosting oppure da un’URL specifica. Avere la possibilità di accedere al phpMy significa mantenere il pieno controllo sul nostro database e riuscire così a risolvere qualsiasi emergenza con l’uso di una copia di backup, vantaggio che non avremmo utilizzando i plugin dedicati di cui parleremo più avanti. Per questo motivo dedicheremo uno spazio anche alle procedure di backup e ripristino manuale per mezzo di phpMy.
Figura 15 – Il pannello phpMy di Aruba.it, sebbene leggermente diverso da quello standard, contiene i due importantissimi comandi Esporta e Importa per il backup e il ripristino del database di WordPress; se si acquista anche il servizio di backup del database, tuttavia, saranno disponibili due comandi appositi nella home dell’area MySQL
Backup da phpMy
Per esportare correttamente da phpMy una copia del database MySQL che permette al nostro sito WordPress di funzionare dobbiamo prima di tutto cliccare sul nome del database, visualizzato generalmente a sinistra della schermata principale, visualizzando così all’interno di quest’ultima tutte le tabelle in esso contenute (Figura 16). In alcuni casi l’area a sinistra della schermata di phpMy contiene più di un database (per esempio nei casi in cui il provider ne fornisca diversi, come nel caso di Aruba.it o di Tophost.it): nel caso vi fosse più di un database visualizzato a sinistra dell’area principale, quindi, assicuriamoci di selezionare quello giusto controllando nel file wp-config.php di WordPress il nome del database utilizzato per il nostro sito. A questo punto siamo pronti per procedere con l’esportazione delle tabelle presenti all’interno del nostro database.
Figura 16 – Le tabelle del database selezionato nell’area a sinistra di quella principale di phpMy, in questo caso è presente un solo database (information_schema è un elemento fisso di phpMy e non va considerato)
Esportazione del database da phpMy (1 di 3)
Una volta che il database è selezionato e le sue tabelle sono quindi visibili nell’area principale di phpMy, possiamo cliccare sul pulsante Esporta che vediamo nella barra superiore di questa schermata (Figura 16), ando così alla schermata di esportazione, dove troveremo inizialmente solo le due sezioni Metodo di esportazione e Formato. Cliccando sulla voce Personalizzato nella prima sezione per selezionarla, vedremo comparire tutte le opzioni disponibili per l’esportazione del database, cominciando con l’elenco delle tabelle visualizzato all’interno di una finestra specifica (Figura 17): assicuriamoci che siano selezionate tutte, trascinando la barra di scorrimento a destra della finestra, ed evitiamo di deselezionarle per errore (nel caso accada, selezioniamole nuovamente in blocco usando il link Seleziona tutto presente sopra la finestra.
Figura 17 – La finestra con l’elenco delle tabelle selezionate che compare cliccando sulla voce Personalizzato della sezione Metodo di esportazione, si noti il link Seleziona tutto in alto
Esportazione del database da phpMy (1 di 2)
Dopo aver selezionato il formato personalizzato, ci restano da impostare solo due delle diverse opzioni disponibili in questa schermata prima di dare il comando di esportazione del database. La prima riguarda l’eventuale compressione del database, sempre consigliabile a meno che non dobbiamo intervenire sul file per modificarlo (per esempio nel caso di una migrazione da un dominio all’altro, che affronteremo più avanti). Possiamo selezionare la compressione e il relativo metodo dal menu della sezione Output, alla voce Compressione, dove un menu (Figura 18) ci permetterà di scegliere l’esportazione del file non compresso (Nessuno) oppure quella in uno o più formati compressi (zip, gzip, ecc.). Se dobbiamo creare semplicemente un backup per un eventuale ripristino, scegliamo la compressione gzip. Compresso o meno che sia, il file sarà comunque esportato nel formato standard SQL, opzione predefinita nell’area Formato che possiamo vedere in basso (Figura 18).
Figura 18 – La sezione Output nella schermata di esportazione personalizzata di phpMy e il menu di selezione per applicare la compressione al file SQL esportato
Esportazione del database da phpMy (2 di 2)
Un’altra importantissima opzione da selezionare prima di esportare il database è quella che porta il nome Aggiungi l'istruzione DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT, e la troviamo nella sezione Opzioni di creazione dell'oggetto più in basso (Figura 19). Quest’opzione farà in modo che, nella fase di importazione, ogni tabella del database attivo sia sostituita da quella con lo stesso nome presente nel file importato, ed è quindi indispensabile quando si ripristina un database da un backup. Può essere eventualmente disattivata, invece, quando il file esportato viene importato all’interno di un database vuoto, per esempio nel corso di una migrazione da un dominio all’altro oppure da un hosting all’altro. A questo punto possiamo cliccare sul pulsante Esegui che troviamo in fondo alla pagina e salvare così una copia del nostro database da utilizzare per un eventuale ripristino.
Figura 19 – L’opzione Aggiungi l'istruzione DROP TABLE della sezione Opzioni di creazione dell'oggetto è importante quando si crea un file di backup da usare per il ripristino sullo stesso database
Backup del database con WP-DB-Backup
Anche se è sicuramente utile conoscere le fasi di un’esportazione manuale del database da phpMy, è altrettanto importante programmare un salvataggio periodico di questo importantissimo file per mezzo di un plugin dedicato, e in questo caso possiamo usare il popolare WP-DB-Backup, a meno che non stiamo già utilizzando tale funzione in un plugin che ne svolge diverse, come WPDBManager che menzioneremo (pur avendolo escluso per diversi motivi) più avanti nell’ambito della gestione e manutenzione del database oppure un plugin dedicato a funzioni più ampie come iThemes Security che è stato già trattato separatamente nell’ambito della sicurezza di WordPress, o ancora in un plugin di backup globale come BackWPup anch’esso trattato ampiamente in altra sede. Per individuare e installare WP-DB-Backup individuiamolo con la funzione di ricerca presente nella schermata Installa Plugin di WordPress (raggiungibile dalla voce Aggiungi nuovo della sezione Plugin) facendo attenzione a inserire correttamente il suo nome nel campo di ricerca per evitare di confonderci con altri plugin dal nome simile.
Una volta installato e attivato, il plugin aggiungerà una nuova voce Backup alla sezione Strumenti di WordPress, cliccando sulla quale accederemo all’unica schermata di configurazione presente (Figura 20).
Figura 20 – La schermata delle opzioni di WP-DB-Backup, si noti a sinistra dell’immagine la nuova voce Backup introdotta dal plugin nella sezione Strumenti di WordPress
La schermata di configurazione di WP-DB-Backup è divisa in tre sezioni. La prima (Figura 20) è Tabelle, e ci permette infatti di selezionare le tabelle da includere nel backup, elencando separatamente quelle che non fanno parte del database standard di WordPress e offrendo la possibilità di escludere da queste ultime i commenti di spam e le revisioni. La seconda sezione, Opzioni di Backup (Figura 21), ci permette di scegliere la destinazione del file di backup, che può essere salvato direttamente sul server in un’apposta cartella, scaricato sul computer o inviato come allegato all’indirizzo email impostato nell’apposito campo. La seconda opzione serve solo per il backup immediato che possiamo attivare cliccano sul pulsante Inizia il Backup!, mentre le altre due rientrano nel backup periodico programmato che viene gestito dalla sezione omonima, l’ultima presente nella schermata, in cui possiamo impostare la periodicità e includere eventuali tabelle extra, cliccando poi su Programma il backup per attivarlo.
Figura 21 – Le configurazioni di WP-DB-Backup che riguardano la destinazione del file di backup e la programmazione di quello periodico; il nome del file salvato conterrà sempre la data e l’ora dell’esportazione per facilitarne l’identificazione
Importazione e ripristino del database
Come abbiamo già avuto modo di sottolineare, l’importazione di una copia di backup del database MySQL va a sostituire le tabelle presenti nel database attivo con quelle incluse nel file di backup, di conseguenza si tratta di un’operazione molto delicata e soprattutto radicale, che va quindi effettuata con cognizione di causa e molta attenzione. Il ripristino di una versione precedente del database è tuttavia consigliato in tutti quei casi in cui quello attivo è stato compromesso, e in particolare qualora ci sia impossibile accedere all’area di amministrazione di WordPress per risolvere eventuali problemi. Quando ci accingiamo a ripristinare il database da un backup, quindi, assicuriamoci prima di tutto che il file che andremo a importare è quello giusto, ed eventualmente salviamo e teniamo da parte un’ulteriore copia del database attuale prima di procedere. Una volta prese le precauzioni appena descritte potremo procedere senza timore in quanto abbiamo evitato che l’operazione sia irreversibile.
Importare il database da phpMy
Proprio per gli aspetti che abbiamo sottolineato riguardo all’operazione di ripristino di un backup del database, la soluzione migliore per gestirlo è tramite phpMy, dal momento che qualsiasi altra modalità condotta dall’interno dell’area amministrativa di WordPress renderebbe irreversibile tale operazione e ci impedirebbe di intervenire in caso di problemi. Accediamo quindi a phpMy usando la modalità a nostra disposizione e, dopo aver selezionato il database come già visto nell’operazione di esportazione, clicchiamo sul pulsante Importa nella barra in alto (Figura 22). Nella nuova schermata clicchiamo semplicemente sul pulsante Sfoglia e carichiamo il file di backup del plugin, cliccando infine sul pulsante Esegui a fondo pagina. Se l’operazione viene completata correttamente sarà visualizzata una nuova pagina contenete un messaggio nella parta alta che conferma il successo dell’importazione, e il database sarà stato ripristinato.
Figura 22 – La schermata di importazione del database, con il pulsante Sfoglia per selezionare e caricare il file di backup
er, il phpMy via plugin
Nel caso non avessimo la possibilità di accedere a phpMy tramite gli strumenti dell’hosting o un indirizzo diretto, può tornarci utile il plugin er, anche se abbiamo già avuto modo di sottolineare come sia sconsigliato operare dall’interno di WordPress quando si tratta di gestire manualmente il database. Una volta installato e attivato, er aggiunge una voce omonima alla sezione Strumenti di WordPress, cliccando sulla quale accediamo all’unica schermata di opzioni in cui troviamo un riepilogo dei dati del nostro database e due pulsanti (Start er inside e Start er i a new tab)che ci permettono, rispettivamente, di accedere a un’interfaccia stile phpMy direttamente nella finestra corrente oppure in una nuova finestra del browser: alla luce di quanto già detto riguardo alla delicatezza di queste operazioni, il consiglio è ovviamente di usare l’opzione Start er in a new tab e lavorare in una finestra o scheda diversa del browser per non ritrovarsi in situazioni di intervento limitato a causa di problemi di WordPress.
Figura 23 – La schermata di er, dove sono visualizzate le informazioni del database e i due pulsanti per aprire l’interfaccia stile phpMy nella stessa finestra o in una nuova finestra o scheda del browser
Esportare e importare il database con er
Una volta che siamo di fronte all’interfaccia phpMy di er, possiamo usare i due comandi Dump e Importa che vediamo in alto a sinistra (Figura 24) per esportare e importare, rispettivamente, il nostro database. Fra le opzioni visualizzate nella parte alta della schermata dobbiamo ricordarci di selezionare, in questo caso, la voce gzip (oppure salva se desideriamo un database non compresso, per esempio per modificarlo in vista di una migrazione) prima di cliccare sul pulsante Esporta, lasciando invariate le altre opzioni. Per l’importazione di un database, invece, usiamo quindi il comando Importa ricordandoci, in questo caso, di attivare l’opzione Mostra solo errori per evitare la visualizzazione dell’intero rapporto durante l’esecuzione. Come per WP-DBBackup, il nome del file esportato conterrà sempre la data e l’ora per consentirci di identificare facilmente il backup più recente ed evitare nello stesso tempo la creazione di file con lo stesso nome.
Figura 24 – L’interfaccia stile phpMy utilizzata dal plugin er, si notino le opzioni disposte in maniera diversa, delle quali basta utilizzare solo la prima relativa al formato compresso o normale del file esportato
Backup e ripristino del database da anel
Per chi non avesse ancora utilizzato questo comodo strumento pur avendo a disposizione il anel nel proprio pacchetto di hosting, ma anche per coloro che non hanno ancora adottato un hosting con anel, è giusto dare un’idea di come funziona il backup e relativo ripristino di un database con tale funzione. Fra i pannelli di strumenti presenti nel anel bisogna individuare quello chiamato Documenti, che contiene tutte le funzioni relative ai backup, all’FTP e alla gestione dello spazio su disco e dei file: fra questi, lo strumento Copia di sicurezza (Figura 25) offre la possibilità di scaricare sul nostro computer (oltre all’intera cartella del sito) una copia compressa del database e di utilizzare il file scaricato per un ripristino in caso di problemi, usando rispettivamente i pulsanti presenti sotto le due voci a MySQL Database Backup e Restore a MySQL Database, in modo semplice e intuitivo. Questo strumento, inoltre, permette di superare i limiti che il phpMy impone sulle dimensioni del database in fase di importazione rendendo in alcuni casi particolarmente difficile se non addirittura impossibile il ripristino.
Figura 25 – Le opzioni dello strumento Copia di sicurezza presente in anel, si notino le diverse opzioni di backup e ripristino dall’uso davvero semplice e intuitivo
Modificare il database per la ‘migrazione’ di un sito
Può capitare, in alcuni casi, di dover trasferire un sito WordPress da un dominio all’altro, e in questo caso il database è l’elemento chiave per una migrazione corretta. Ci possono essere casi diversi, per esempio lo spostamento di un sito da hosting Web a server locale e viceversa, oppure il trasloco di un sito da un dominio vecchio o temporaneo (generalmente di terzo livello) a un dominio nuovo o definitivo, e così via. In tutti questi casi, oltre a riconfigurare il file wpconfig.php con i dati del nuovo database bisognerà importare in quest’ultimo il database del vecchio sito, e prima di farlo sarà necessario sostituire tutte le occorrenze relative all’URL del dominio originale con l’indirizzo esatto del dominio di destinazione.
Quest’operazione si può fare, come sempre, tanto manualmente quanto servendosi di un plugin ad hoc. Nel primo caso dovremo semplicemente aprire il file (non compresso) del database con un editor di testo o meglio ancora un editor di codice, per esempio Notepad++ su Windows oppure TextWrangler su Mac, e usare il comando ‘cerca e sostituisci’ per rimpiazzare l’URL originale con quella nuova, ricordandoci di inserire http:// prima dell’indirizzo del dominio. Nel secondo caso possiamo salvare il database per mezzo di un plugin come WP Migrate DB (che aggiunge una voce omonima alla sezione Strumenti di WordPress una volta installato e attivato) nella cui schermata basta definire semplicemente l’URL di destinazione e il percorso della cartella di hosting relativa, dopodiché potremo salvare il file del database, eventualmente compresso, sul nostro computer per importarne direttamente le tabelle nel database di destinazione sul nuovo sito. Fra le opzioni disponibili nella versione gratuita del plugin troviamo anche la possibilità di non includere le revisioni dei contenuti e i commenti di spam nell’esportazione, mentre quella a pagamento offre diverse opzioni in più fra cui la possibilità di escludere determinate tabelle dal database(per esempio quelle di plugin inutilizzati) oppure quella di controllare nei minimi dettagli il processo di sostituzione o di esportazione e importazione. In particolare, l’opzione Replace GUIDs va attivata solo se stiamo migrando da un dominio non utilizzato (per esempio su server locale o su un dominio temporaneo di terzo livello) in quanto influenza la creazione dei feed
RSS e la modifica dei campi GUID del database influirebbe quindi negativamente su tale funzione in tutti gli altri casi.
Le poche, ma importanti opzioni del plugin WP Migrate DB, utilissimo nelle fasi di migrazione di un sito da un dominio a un altro
Manutenzione del database di WordPress
Se la creazione di un backup periodico, eventualmente automatizzato, del database di WordPress è la regola numero uno per essere in grado di risolvere problemi anche gravi del nostro sito, una corretta manutenzione del database è certamente la regola numero due. Quando parliamo di ‘manutenzione’ intendiamo sia l’ottimizzazione, anch’essa periodica, sia l’eventuale riparazione in caso di malfunzionamenti: anche per questo genere di operazioni possiamo procedere sia manualmente sia avvalendoci di plugin specializzati.
Abbiamo escluso dai plugin che saranno trattati in dettaglio singolarmente il pur noto e completo WP-DBManager, in quanto il suo utilizzo può mettere in difficoltà gli utenti meno esperti e in diversi casi ha causato dei problemi al database stesso, quindi preferiamo aspettare che sia disponibile una versione più affidabile e intuitiva prima di presentarne le caratteristiche e spiegarne l’utilizzo.
Figura 26 – La pagina ufficiale del plugin WP-DBManager su WordPress.org, si noti il numero di voti bassi rispetto a quelli dei voti più alti, dovuti alle difficoltà di configurazione e ai problemi provocati dal suo utilizzo in alcuni casi
Quando è necessario ottimizzare un database
In generale la necessità di ottimizzare un database nasce con il semplice are del tempo, dal momento che fra le cause del sovraccarico possono esserci fattori come i commenti di spam o cancellati, i tag inutilizzati o l’accumulo di revisioni e bozze automatiche dei contenuti. L’uso dei plugin in genere e di alcuni plugin in particolare, inoltre, è un ulteriore elemento che contribuisce a creare nel database un sovraccarico di dati che richiedo quindi un’ottimizzazione periodica (e a volte una vera e propria ‘pulizia’, come vedremo più avanti). Per avere verificare lo stato di salute del nostro database possiamo servirci, ancora una volta, di phpMy: quando visualizziamo le tabelle del database dopo averlo selezionato, infatti, potremmo notare nell’ultima colonna a destra (Overhead), dei valori che indicano appunto un sovraccarico di dati all’interno di specifiche tabelle (Figura 27). In tal caso è opportuno procedere con un’ottimizzazione manuale (che descriveremo fra poco) oppure ricorrendo all’aiuto di un plugin specializzato. Utilizzando un plugin (ne descriveremo diversi più avanti) potremo, inoltre, programmare queste operazioni nel tempo in modo automatico, migliorando così le prestazioni del nostro sito.
Figura 27 – La colonna Overhead nella visualizzazione delle tabelle in phpMy, si notino i valori presenti che indicano la necessità di ottimizzare in modo particolare alcune tabelle
Ottimizzare manualmente il dabatase di WordPress
Prima di parlare dei plugin che svolgono questa importante funzione, è giusto spiegare di che si tratta e come possiamo utilizzarla per mezzo di phpMy, ovvero manualmente. Con il termine ‘ottimizzazione’ intendiamo, nel caso del database di WordPress, la ‘pulizia’ e la ‘deframmentazione’ delle tabelle che lo costituiscono, operazioni abbastanza simili a quelle con cui si eliminano da un computer i file temporanei e si ‘deframmenta’ il disco. Quando visualizziamo le tabelle del nostro database in phpMy, selezionandolo, possiamo selezionarle usando il comando Seleziona tutti presente in basso e utilizzare l’opzione Ottimizza tabella (Figura 28) dal menu a destra per ottimizzare appunto tutte le tabelle che abbiamo selezionato. Alla fine dell’operazione sarà visualizzato un messaggio di conferma e un elenco delle tabelle che in cui viene indicato quelle sono state ottimizzate (Ok) e quelle che non richiedevano alcuna ottimizzazione (Table is already up to date).
Figura 28 – Il menu di phpMy che permette di selezionare l’opzione Ottimizza tabella che ottimizza appunto le tabelle selezionate in un database MySQL
Svuotare o eliminare le tabelle dei plugin
Può essere utile imparare a riconoscere le tabelle inserite dai plugin all’interno del nostro database mySQL, anche perché spesso rimangono pur disinstallando il plugin che le ha create. Alcuni plugin, infatti, dopo avere creato una o più tabelle ‘di servizio’ nel database MySQL del nostro sito accumulano al loro interno dei dati che possono anche aumentare considerevolmente le dimensioni del database stesso (ce ne possiamo rendere conto anche quando ne salviamo una copia di backup). Selezionando il database in phpMy e osservando le colonne Righe e Dimensione sarà facile notare in alcune tabelle in questi casi dei valori notevolmente più alti rispetto a quelli della maggior parte delle altre tabelle presenti nel database (Figura 29). Se osserviamo bene il nome della tabella dovremmo essere in grado di identificare il plugin che l’ha creata, il cui nome è spesso inserito come parte iniziale di quello della tabella stessa, sotto forma di sigla. Dovremo, in questo caso, verificare prima di tutto se fra le opzioni del database c’è qualcosa che riguarda un log o qualche altro tipo di dati memorizzati nel tempo e se è disponibile un comando che consenta di eliminare questi dati: è il caso di plugin come Redirection o iThemes Security, che presentano infatti entrambe le caratteristiche (trattandosi di plugin dedicati ad altre funzioni che esulano dall’argomento trattato, ci occuperemo di questi e altri casi in altra sede, quando si parlerà di ogni specifico plugin). Una volta individuato il plugin e la funzione con cui genera i dati riscontrati nella tabella, controlliamo quindi se è possibile ‘svuotare’ la tabella da tali dati per mezzo di un’opzione presente nelle impostazioni del plugin stesso e utilizziamola; qualora il plugin non fosse attivo, attiviamolo temporaneamente e, dopo avere utilizzato la funzione appena descritta, disattiviamolo nuovamente (o ancora meglio cancelliamolo addirittura se riteniamo di non doverlo usare più in futuro). Per quei casi in cui, invece, il plugin non offrisse tale funzione o, pur essendo presente, questa non sortisse l’effetto previsto, dovremo procedere manualmente a svuotare o addirittura cancellare la tabella da phpMy, oppure affidarci a un plugin come Plugins Garbage Collector, di cui parleremo più avanti, ricordandoci sempre di salvare una copia di backup del database prima di eseguire questo genere di operazioni.
Figura 29 – Un tipico esempio di tabelle dalle dimensioni particolarmente elevate, create dai rispettivi plugin, si notino i valori nella colonna Righe e Dimensione
Svuotare ed eliminare le tabelle da phpMy
Prima di esaminare qualche plugin specifico per l’eliminazione o lo svuotamento di tabelle ‘problematiche’ nel database di WordPress diamo rapidamente uno sguardo alle rispettive funzioni offerte da phpMy che ci consentono appunto di eseguire manualmente questo genere di operazioni. Come abbiamo già visto per l’ottimizzazione manuale delle tabelle, anche in questo caso dobbiamo prima di tutto selezionare quelle che vogliamo svuotare o rimuovere del tutto, cliccando sulla relativa casella di spunta, e poi selezionare l’opzione Svuota oppure Elimina dal menu visualizzato sotto l’elenco delle tabelle (Figura 30) e identificato dalla voce Se selezionati. A questo punto sarà visualizzata la richiesta di conferma dell’operazione (Sei sicuro di voler eseguire la seguente query?) seguita dal comando specifico che stiamo per eseguire, attivato dalla voce di menu scelta, e potremo confermare cliccando sul pulsante Sì per procedere. Nel caso volessimo svuotare o cancellare una singola tabella possiamo utilizzare i pulsante Svuota o Elimina presente nella colonna Azione in corrispondenza della riga associata alla tabella stessa, e anche in questo caso sarà visualizzato un messaggio che richiede la conferma dell’operazione. Ricordiamoci, naturalmente, di salvare sempre una copia di backup del database prima di procedere con operazioni delicate o drastiche come quelle appena descritte, in modo da poterlo ripristinare qualora dovessimo riscontrare dei problemi nel sito dopo lo svuotamento o la rimozione delle tabelle.
Figura 30 – Lo svuotamento di una tabella selezionata in phpMy, si noti il comando Elimina che segue il comando Svuota e permette di rimuovere definitivamente la tabella stessa
Pulizia del database con Plugins Garbage Collector
Come abbiamo già avuto modo di vedere, i plugin creano delle loro tabelle all’interno del database MySQL di WordPress e inseriscono al loro interno dei dati ‘di servizio’ che in molti casi possono appesantire notevolmente il database riducendo le prestazioni del sito e rendendo meno agevoli o addirittura compromettendo le operazioni di backup e ripristino. Plugins Garbage Collector è un plugin che, una volta installato e attivato, aggiunge una voce omonima alla sezione Strumenti di WordPress e ci permette di accedere a una schermata in cui possiamo attivare una scansione del database per individuare le tabelle non standard, ovvero quelle aggiunte tipicamente dai plugin, verificandone la dimensione e risalendo al plugin che le ha generate. Lasciando attiva l’opzione che troviamo già selezionata nella schermata del plugin (Cerca le tabelle nonWP) clicchiamo sul pulsante Esamina e aspettiamo che la scansione sia terminata: alla fine otterremo un elenco (Figura 31) di tutte le tabelle che non fanno parte delle undici include nell’installazione di WordPress, con la specifica, per ognuna, del numero di ‘record’ presenti in essa e delle sue dimensioni, oltre al nome del plugin cui è associata e lo stato di quest’ultimo (attivo, disattivato o cancellato, in inglese rispettivamente Active, Deactivated e Deleted). Di fianco a ogni tabella viene visualizzata una casella di spunta che possiamo selezionare per cancellare la tabella stessa usando il pulsante Delete Tables in basso, tuttavia è sempre preferibile creare prima di tutto un backup del database prima di procedere in tal senso, e in secondo luogo verificare se c’è la possibilità di svuotare la tabella agendo sulle opzioni del relativo plugin, per esempio quando si tratta di log che prevedono appunto l’opzione di cancellazione. Capiterà, in qualche caso, di avere delle tabelle che, pur visualizzate nell’elenco, non possono essere cancellate usando il plugin, e hanno dimensioni particolarmente grandi: se si tratta di plugin disattivati ma non ancora cancellati e riteniamo di poterli disinstallare procederemo in tal senso, ricontrollando in seguito se la tabella risulta cancellabile, in caso contrario potremo intervenire solo da phpMy, ma sempre ricordandoci di creare una copia di backup del database per scongiurare problemi derivanti dalla rimozione della tabella.
Figura 31 – Una porzione del report visualizzato da Plugins Garbage Collector su un sito in cui sono stati installati diversi plugin che hanno creato tabelle particolarmente voluminose, si notino le due colonne con il numero di record e le dimensioni della tabella e quelle con i nomi dei plugin e il loro stato
Ripulire la tabella Options dai _transient
Anche le tabelle standard di WordPress possono ‘gonfiarsi’ e richiedere degli interventi di ‘pulizia forzata’ che vanno al di là dell’ottimizzazione di base. Un caso tipico è quello provocato dalla presenza di un numero elevato di elementi _transient all’interno della tabella wp_options, che possiamo verificare inserendo nel browser l’indirizzo del nostro sito seguito da /wp/options.php mentre siamo loggati come amministratori, e scorrendo la schermata che viene prodotta per scoprire se fra gli elementi visualizzati sono incluse numerose righe che cominciano con _transient (Figura 32). Questi elementi sono generalmente innocui e vengono creati temporaneamente e poi rimossi quando ‘scadono’, tuttavia in alcuni casi possono rimanere nella tabella _options e diventare così facile bersaglio degli hacker con le prevedibili conseguenze sul nostro sito. Possiamo rimuovere questi elementi sia per mezzo di plugin appositi, che tratteremo separatamente, sia manualmente con un comando (query) SQL inviato da phpMy. Per procedere con questa seconda modalità selezionando come sempre il database e clicchiamo sul pulsante SQL per visualizzare il campo in cui è possibile inserire i comandi per il database (Figura 33) e digitare al suo interno DELETE FROM `wp_options` WHERE `option_name` LIKE ('_transient_%');
Cliccando sul pulsante Esegui sarà visualizzato un messaggio che richiede le conferma dell’operazione e, nel momento in cui cliccheremo su OK, la query sarà inviata al database e al termine dell’operazione sarà visualizzato un messaggio che segnala il numero di righe cancellate. Ricordiamo che, nel caso avessimo cambiato il prefisso standard wp_ delle tabelle di WordPress in qualcos’altro per motivi di sicurezza, dovremo riformulare il comando sopra descritto usando il nuovo prefisso.
Immagine 31 – Una parte degli elementi _transient riscontrati analizzando l’elenco prodotto dal file options.php
Figura 32 – La query per la rimozione degli elementi _transient dalla tabella wp_options, si noti il pulsante Esegui che ne avvia l’esecuzione previa conferma da parte nostra in una successiva finestra
Ottimizzare il database eliminando le revisioni
Le revisioni dei contenuti, ovvero le versioni precedenti di una pagina o di un articolo salvate in automatico da WordPress durante la sua stesura e successive modifiche, rappresentano dei veri e propri duplicati e possono, col tempo, ‘gonfiare’ il database in maniera considerevole.
Possiamo eliminare tutte le revisioni presenti usando la query DELETE FROM wp_posts WHERE post_type = "revision"; nella finestra dei comandi di phpMy, ma appunto si tratta di un’operazione da fare dopo esserci assicurati di non avere più bisogno di alcuna revisione ata, e naturalmente dopo aver salvato la solita, preziosa, copia di backup del nostro database.
Possiamo anche aumentare l’intervallo fra i salvataggi automatici attraverso l’inserimento di un’istruzione apposita nel file wp-config.php, e per chi volesse farlo ecco le due righe da aggiungere al file, tenendo presente che il valore 300 si riferisce ai secondi e normalmente è impostato su 60 (quindi un minuto), per cui impostandolo a 300 le revisioni del contenuto in fase di creazione o modifica saranno salvate ogni cinque minuti:
define('AUTOSAVE_INTERVAL', 300 ); // seconds
define('WP_POST_REVISIONS', false );
In teoria, quando siamo certi di aver pubblicato la versione definitiva di una pagina o di un articolo potremmo liberarci di tutte le revisioni salvate nel frattempo, o quantomeno di quelle meno recenti, e per farlo possiamo servirci,
come sempre di un plugin dedicato oppure di un plugin per l’ottimizzazione in generale che preveda, fra le sue opzioni, anche la cancellazione delle revisioni. Fra i plugin dedicati a questo compito specifico Better Delete Revision Manager è probabilmente quello più adatto, dal momento che permette di configurare il modo in cui le revisioni andranno cancellate.
Una volta installato, Better Delete Revision Manager crea una voce omonima nella sezione Impostazioni di WordPress, cliccando sulla quale accederemo alla schermata (Figura 33) dove troviamo due pulsanti: Controlla le Revisioni dei Post e Ottimizza il Database. Il primo visualizza un elenco di tutte le revisioni e offre la possibilità di cancellarle in blocco e definitivamente, mentre il secondo visualizza lo stato delle tabelle del database permettendo di correggere le situazioni visualizzate con un colore rosso che indicano, appunto, la necessità di ottimizzazione.
Più drastico nell’operazione di cancellazione è invece Revision Cleaner, in quanto appena installato procede immediatamente a cancellare tutte le revisioni dell’utente loggato, nonostante questo possa in seguito definire nel suo profilo la durata delle revisioni successive (Figura 34), ma è giusto menzionarlo per chi volesse eventualmente adottarlo in modo da configurare appunto il tempo di conservazione delle revisioni che può essere stabilito in un certo numero di giorni e di ore.
Figura 33 – I due pulsanti principali di Better Delete Revision Manager, che permettono rispettivamente di visualizzare e cancellare tutte le revisioni presenti e ottimizzare le tabelle del database che lo dovessero richiedere
Figura 34 – La schermata di Revision Cleaner, con il numero di revisioni cancellate all’attivazione del plugin e il link per configurare la durata del periodo di conservazione delle revisionei
Pulizia del database con WP-Optimize
Uno dei più noti plugin gratuiti per la pulizia del database di WordPress è WPOptimize, divenuto molto popolare per la sua capacità di individuare e rimuovere tutta una serie di elementi ‘inutili’ dalle tabelle del database come i _transient ‘scaduti’ di cui abbiamo già parlato in precedenza. Installando e attivando il plugin troveremo la nuova voce WP-Optimize in fondo alla barra laterale di WordPress, cliccando sulla quale accederemo alla schermata principale delle sue impostazioni (Figura 35). In questa prima schermata troviamo una serie di elementi già selezionati nell’area a sinistra (Clean-up options), fra cui le revisioni dei contenuti salvate in precedenza, e altri che possiamo decidere di aggiungere se lo riteniamo necessario, mentre nell’area a destra troviamo l’opzione Ottimizza le tabelle del database già spuntata (con la raccomandazione di salvare un backup del database prima di procedere) e un grosso pulsante ESEGUI che avvia la procedura di pulizia e di ottimizzazione (se quest’ultima è appunto selezionata), al termine della quale viene visualizzato, in alto, un report delle operazioni compiute. Sempre nell’area di destra troviamo, inoltre due link che visualizzano la scheda Impostazioni, raggiungibile anche dall’ominima voce di menu presente in alto, nella cui schermata (Figura 36) possiamo configurare il periodo di conservazione dei dati (scegliendo un numero di settimane da 2 a 10) e programmare la pulizia automatica del database (settimanale, quindicinale o mensile) con le operazioni da includere di cui sono già attive quelle più importanti; ricordiamo di programmare anche un backup periodico del database con un altro plugin, in questo caso, per tenerci al sicuro da potenziali inconvenienti. La voce di menu Tables, invece, visualizza una schermata con l’elenco delle tabelle fornendo, a fine pagina, la dimensione del database e la stima dello spazio che può essere liberato procedendo con le operazioni di pulizia e ottimizzazione selezionate.
Figura 35 – La schermata principale di WP-Optimize, con a sinistra le opzioni preselezionate e a destra il pulsante per avviare la pulizia e, se attiva, anche l’ottimizzazione del database
Figura 36 – La schermata delle impostazioni di WP-Optimize, con a sinistra la durata di conservazione dei dati e a destra la pianificazione delle operazioni di pulizia e ottimizzazione periodiche
Pulizia del database con Smart Cleanup Tools
Come accade in molti ambiti, anche nel caso della pulizia e ottimizzazione del database di WordPress troviamo, di fianco ai plugin gratuiti presentati sul sito ufficiale, delle ottime soluzioni a pagamento, che vale la pena menzionare per chi volesse investire una piccola somma e assicurarsi un prodotto più affidabile e completo rispetto alle controparti gratuite. Smart Cleanup Tools è proprio uno di questi, con ben 38 strumenti di pulizia e rimozione a disposizione dell’utente la cui azione, sommata, può alleggerire in maniera considerevole il database di un sito. Appena installato e attivato, il plugin aggiunge alla sezione principale (Bacheca) di WordPress la nuova voce Smart Cleanup Tools, cliccando sulla quale ci ritroviamo nella schermata principale (Figura 37) identificata dall’etichetta Cleanup, dove sulla parte sinistra è visualizzata subito una stima dell’ottimizzazione che possiamo ottenere con gli strumenti attivi (Active Tools), cliccando semplicemente sul pulsante Run Cleanup. Quest’ultimo avvia il processo di pulizia del quale conosceremo, alla termine, il risultato effettivo che sarà visualizzato nella stessa area al di sopra del pulsante stesso.
Gli strumenti sono elencati invece nell’area più grande a destra, ognuno all’interno di un riquadro diverso, il cui colore indica lo stato attuale: verde per gli strumenti attivi e in grado di garantire un risultato, rosa per quelli attivi ma associati a elementi del database che non richiedono interventi e bianco per quelli non attivi in quanto richiedono in genere una decisione da parte nostra. Alcuni strumenti permettono anche una configurazione per mezzo di un menu da cui è possibile alcuni elementi dall’operazione di pulizia, e in ognuno dei riquadri troviamo la stima degli elementi che saranno gestiti e dello spazio recuperato come risultato. Fra gli elementi del database gestiti dai diversi strumenti troviamo molti di quelli che abbiamo già descritto parlando dell’ottimizzazione del database di WordPress, ma anche altri come la cache dei feed RSS, gli elementi ‘orfani’ ovvero privi di connessione con un contenuto valido, quelli cestinati e così via (una trattazione di ogni singolo pannello richiederebbe un’intera guida, per cui rimandiamo a eventuali approfondimenti sugli elementi del database coinvolti nel processo di ottimizzazione nell’area del sito dedicata all’ottimizzazione del database e di WordPress in generale).
Oltre alla scheda della schermata principale (Cleanup) il plugin presenta altre sette schede. La scheda Reset ci porta in una schermata dove possiamo eventualmente ‘azzerare’ alcuni parametri di WordPress, altra operazione per la quale è giustamente suggerito un backup del database prima di procedere. La scheda Scheduler, invece, è collegata a una schermata (Figura 38) dove troviamo il pulsante Create New Job che ci permette di programmare delle operazioni pianificate con periodicità oraria, giornaliera, settimanale o mensile nelle quali includere gli strumenti che selezioneremo nella solita area a destra, avviandone l’esecuzione immediatamente oppure a una data e ora precisa selezionabili da un pannello a comparsa; a ogni operazione potremo assegnare un nome specifico. La schermata collegata alla scheda Statistics fornisce, ovviamente, dei dati statistici sulle operazioni già effettuate, anche in questo caso riassunti nella parte sinistra dello schermo e suddivisi per i diversi strumenti nella parte destra, mentre nella schermata della scheda Log troviamo, sulla sinistra, un elenco dei log disponibili, che possiamo visualizzare (se li abbiamo attivati nelle impostazioni) nell’area a destra cliccando sul singolo nome del log (oppure scaricare dalla cartella /wp-content/s/ in cui vengono salvati sotto forma di file con estensione .log). Dalla schermata collegata alla scheda Export/Import potremo poi esportare e importare la configurazione del plugin e le pianificazioni eventualmente create, mentre nella schermata Settings avremo naturalmente accesso alla configurazione globale del plugin, ovvero potremo decidere quali strumenti disabilitare nelle operazioni di pulizia (cleanup) e azzeramento (reset) già viste, se visualizzare gli strumenti inattivi e i report finali e infine se e cosa visualizzare nei log. L’ultima scheda, About, è naturalmente collegata a una schermata che riassume i dati relativi alla versione del plugin e pubblicizza gli altri plugin dello stesso sviluppatore.
L’efficacia di Smart Cleanup Tools si è rivelata concreta in vari test, con un alleggerimento del database che in alcuni casi ha sfiorato il cinquanta per cento, anche utilizzato semplicemente nella sua configurazione di base e in maniera sporadica. Impegnandosi ad approfondirne i diversi aspetti e strumenti e pianificando le operazioni di pulizia e ottimizzazione periodiche e automatizzate i risultati saranno ancora più evidenti, ma non dimentichiamo mai di avere una forma di pianificazione e automatizzazione anche per il backup del database, a scanso di problemi.
Figura 37 – La schermata principale di Smart Cleanup Tools, relativa alla scheda Cleanup, si noti l’area a sinistra con le stime del risultato di pulizia del database e quella a destra che raccoglie tutti gli strumenti disponibili
Figura 38 – La schermata per la pianificazione delle operazioni automatizzate (Scheduler) in Smart Cleanup Tools, si noti il pulsante Create New Job che permette di creare una nuova pianificazione definendo tutte le operazioni da includere
Riparare le tabelle di un database danneggiato
Il caso estremo di intervento su un database è quello cui siamo costretti quando quest’ultimo viene in qualche modo danneggiato e diventa impossibile addirittura accedere all’aera di amministrazione.
Accedendo a phpMy e selezionando il database potremo, in questo caso, selezionare successivamente tutte le tabelle o soltanto quelle che richiedono una riparazione (potremmo desumere queste ultime da eventuali messaggi d’errore o dai file di log degli errori del server) e usare l’opzione Ripara tabella del solito menu (Figura 39) presente sotto l’elenco delle tabelle, che abbiamo già illustrato nelle operazioni di ottimizzazione, svuotamento e cancellazione delle tabelle.
Se non abbiamo accesso a phpMy possiamo invece tentare di risolvere questa spiacevole eventualità impostando in WordPress una funzione disponibile dalla versione 2.9 che permette di riparare periodicamente il database, includendo nel file wp-config.php la seguente istruzione:
define( 'WP_ALLOW_REPAIR', true );
caricando poi il sito con questo tipo di indirizzo: http://nomedelsito.it/wp/maint/repair.php
In questo modo visualizzeremo, al caricamento del sito, due pulsanti con i quali possiamo rispettivamente soltanto riparare il database oppure ripararlo e ottimizzarlo; l’istruzione inserita in wp-config.php andrà ovviamente rimossa dopo che il database è stato riparato, per evitare che intervenga in modo non
appropriato.
Come sempre, avere a disposizione un backup recente del database può aiutarci a risolvere in maniera ancora più efficace il problema, quindi ricordiamoci di adottare un sistema di backup programmato e automatico del database come quelli illustrati in precedenza.
Figura 39 – L’opzione Ripara tabella del menu di phpMy, utilizzabile su tutte le tabelle o solo su alcune, a seconda di come le avremo selezionate
Conclusioni
Questa guida si conclude qui, ma l’appuntamento è sul sito wpaz.it per ulteriori approfondimenti e aggiornamenti su questi e altri argomenti legati a quanto trattato in questo manuale e ad altri aspetti pratici dell’uso di WordPress e dei suoi componenti (temi e plugin). Nella stessa collana di cui questa guida fa parte saranno pubblicati altri manuali pratici dedicati ad argomenti diversi, dalla manutenzione alla SEO, dall’ottimizzazione alla creazione di moduli di contatto, e così via cercando di coprire tutte le esigenze di approfondimento pratico che qualunque utente di WordPress può avere quotidianamente. Ogni nuovo titolo sarà annunciato sul sito e i lettori sono invitati a inviare il loro e suggerire argomenti anche specifici.
L’Autore
Bonaventura Di Bello svolge da oltre due decenni il ruolo di giornalista, divulgatore, consulente e formatore in ambito informatico e Internet, con particolare specializzazione in settori come Web/social marketing e SEO, copywriting e content management, personal branding e lo sviluppo di landing page, siti, blog e portali con il CMS WordPress.
I suoi servizi professionali di assistenza, formazione e consulenza sono rivolti tanto alle aziende quanto ai singoli professionisti e ai privati, così come i suoi libri, articoli e guide, che spesso rappresentano un punto di partenza importante nell’instaurare un valido rapporto di collaborazione professionale fra l’autore e il lettore, non importa che quest’ultimo sia un professionista che opera già nel settore o un semplice apionato che intende perfezionare la sua conoscenza dell’argomento.
Ha pubblicato con l’editore Hoepli i volumi con WordPress, Guadagnare in Internet con WordPress e WordPress, la Guida completa.
È possibile contattarlo via email all’indirizzo
[email protected], con un messaggio privato dalla sua pagina ufficiale su Facebook oppure attraverso il modulo contatti di uno qualsiasi dei suoi blog e siti, a partire dal blog personale bonaventuradibello.it