OFFERTA LANCIO — LIMITATA Das Nest Lifetime 499 € 149 € Approfitta ora →
KakapoWP KakapoWP
Centro assistenza/Performance/Configurare la cache degli oggetti con Redis o Memcached

Configurare la cache degli oggetti con Redis o Memcached

Vale per: Kakapo Performance· 5 min di lettura

Prima di tutto: che cosa sa fare il tuo PHP?

La cache degli oggetti si rivolge a Redis o Memcached, e per questo PHP ha bisogno dell'estensione adatta. Kakapo lo verifica in fase di esecuzione, controllando se la classe Redis o Memcached sia davvero caricata. Un servizio Redis in funzione da solo non basta: senza estensione PHP non può parlarci. Se manca, la voce nell'elenco di scelta è disattivata e accanto è indicato quale pacchetto manca (per esempio «pecl install redis» oppure il pacchetto di distribuzione php<version>-redis, dopodiché riavvia PHP). Se Kakapo trova solo la vecchia estensione «memcache» senza la d, lo dice esplicitamente — non viene usata, perché le mancano l'interrogazione cumulativa getMulti e la trasmissione binaria. Se non c'è nessuna delle due estensioni, qui non vai avanti; è una questione del tuo provider di hosting, non del plugin.

Inserire la connessione

L'host è di solito 127.0.0.1. Uno schema come «http://» viene rifiutato, perché qui va solo il nome host o l'IP. Per un socket Unix inserisci il suo percorso (ad es. /var/run/redis/redis.sock) e imposti la porta su 0. La porta è di solito 6379 con Redis e 11211 con Memcached; sono ammessi valori da 0 a 65535. Se cambi il collegamento, Kakapo adegua automaticamente la porta predefinita, finché la vecchia era ancora quella predefinita. Il numero di database (da 0 a 255) esiste solo con Redis e separa questo sito dalle altre applicazioni sullo stesso server. Utente e password ti servono solo se il tuo Redis lavora con ACL (da Redis 6) o se Memcached richiede SASL. Il prefisso delle chiavi separa l'una dall'altra due installazioni WordPress sullo stesso server di memoria — se il campo resta vuoto, viene derivato un prefisso dall'indirizzo del tuo sito (kwpp più otto caratteri). Sono ammessi lettere, cifre e _ . : -, al massimo 40 caratteri. La validità per ogni voce è preimpostata su 86400 secondi; sono ammessi valori da 0 a 2592000. 0 significa «non scade mai» — questo ha conseguenze per lo svuotamento, vedi sotto.

Testare la connessione prima di scrivere qualcosa

Il pulsante «Testa connessione» stabilisce davvero una connessione, scrive una chiave di prova (validità 30 secondi), la rilegge, la confronta carattere per carattere con il valore scritto e la cancella di nuovo. Solo quando il valore torna immutato il test si considera superato — un semplice «connect() non ha restituito false» sarebbe troppo poco: Redis può essere connesso e comunque protetto da scrittura (replica), Memcached accetta connessioni prima di avere memoria. Per l'intero ciclo vale un limite di tempo di un secondo. La durata misurata e alcune informazioni sul server (versione, memoria occupata, numero di voci, durata di funzionamento) compaiono poi nella scheda. Se il test fallisce, lì è indicato il motivo concreto: non raggiungibile, accesso rifiutato, database non selezionabile. Il test viene eseguito esclusivamente nell'area di amministrazione o tramite cron — durante la costruzione della pagina per un visitatore non viene mai stabilita una connessione di prova.

Scrivere il drop-in — e che cosa succede in quel momento

La cache degli oggetti vive nel file wp-content/object-cache.php. WordPress lo carica molto presto, ancora prima di ogni plugin. Prima di scrivere, Kakapo mostra un'anteprima: quale file viene creato, quali dati di accesso vi compaiono, che cosa si troverà poi nel server di memoria e come si torna indietro. Se qualcosa è d'intralcio — estensione mancante, drop-in estraneo in quel punto, wp-content non scrivibile, modello mancante —, il pulsante è disattivato e il motivo è indicato sopra di esso; al momento della scrittura la verifica si ripete lato server. Per confermare digiti INSTALLIEREN. La scrittura avviene poi dapprima in un file vicino, la cui sintassi viene controllata da PHP stesso (sempre che exec() sia consentito e un file binario PHP sia raggiungibile), e solo dopo il file viene rinominato al suo posto e impostato su 0644. Il motivo di questo giro: un object-cache.php scritto a metà sarebbe un errore prima di ogni plugin — il sito resterebbe bianco, anche la pagina di amministrazione dalla quale volevi annullare tutto. Ogni scrittura riceve inoltre una propria generazione, affinché le voci del periodo precedente a una rimozione non tornino valide di colpo (altrimenti tornerebbe per esempio il vecchio nome del blog e gli amministratori collegati verrebbero buttati fuori dalla loro sessione). Se in quel punto si trova già un drop-in estraneo, non viene né sovrascritto né cancellato.

In esercizio: leggere i numeri, svuotare, rimuovere

Sotto «Esercizio corrente» compaiono i numeri di questa singola visualizzazione di pagina: instaurazione della connessione in millisecondi, riscontri e mancati riscontri, quanti di essi provenivano dal server di memoria, quante richieste sono andate lì e quanto sono durate. Statistiche nel tempo non sono previste di proposito — tenerle costerebbe a ogni chiamata più di quanto misurino. «Svuota cache degli oggetti» cambia il sale delle chiavi invece di inviare FLUSHDB o flush_all: così nessuna vecchia chiave punta più a una voce valida, mentre i dati di altre applicazioni sullo stesso server restano intatti. Le voci orfane scadono con la validità impostata — se questa è su 0, non scadono mai e si accumulano finché Redis o Memcached non fanno pulizia da soli. Se modifichi le impostazioni, continua a valere ciò che sta nel file; Kakapo segnala la differenza e propone «Aggiorna drop-in». «Rimuovi drop-in» cancella esattamente un file, senza lasciare né righe nel database né voci di calendario; disattivando il plugin, il file sparisce ugualmente. Se non vuoi avere la password in chiaro nel file, la definisci come KWPP_OC_AUTH nel wp-config.php e lasci il campo vuoto — la costante ha la precedenza. Lo stesso vale per host, porta, utente, database e prefisso (KWPP_OC_HOST, KWPP_OC_PORT, KWPP_OC_USER, KWPP_OC_DB, KWPP_OC_PREFIX); un cambio di server non richiede allora di riscrivere il drop-in.

Questo articolo ti è stato utile?