Skip to content

Cos’è OPCACHE

Una delle maggiori criticità riguardo i siti web è il tempo di caricamento. Uno dei modi migliori per ridurre il tempo di caricamento è abilitare sistemi di cache. Non esiste solo la cache di file HTML, OpCache infatti è una cache di opcode, che aumenta la velocità dei siti Web PHP memorizzando script precompilati bytecode nella memoria condivisa.

Mettere in cache gli script PHP significa che, la prima volta che lo script viene eseguito viene anche precompilato e salvato in memoria. Tutte le volte successive che lo script verrà richiamato non sarà necessario eseguirlo di nuovo dato che opcache ha memorizzato il codice risultante nella memoria RAM. Questo risparmio ti tempo porta miglioramenti delle prestazioni, soprattutto su siti web costantemente sotto stress.

La definizione ufficiale dice:

OPCache migliora le performance PHP immagazzinando uno script bytecode precompilato nella memoria condivisa, eliminando così la necessità per il PHP di caricare e analizzare gli script per ogni richiesta.

In altre parole, quando uno script PHP viene eseguito, è compilato in opcode, un codice comprensibile dalla macchina. OPCache immagazzina questo codice in memoria durante la prima esecuzione in modo che sia riutilizzato in seguito. La cache PHP porta così a incrementi di performance. OPCache rimpiazza APC ed è un’alternativa a XCache, un acceleratore PHP. A differenza di Memcached che lavora sul database, Opcache lavora sugli script PHP.

Questa estensione è in bundle con PHP 5.5.0 e versioni successive, ed è disponibile in PECL per le versioni di PHP 5.2, 5.3 e 5.4.

Fondamentalmente quando il sistema compila del codice in PHP, il codice leggibile dall’uomo viene convertito in linguaggio macchina e ci vuole tempo per compilare tutti gli script. Quindi se l’applicazione fa molte richieste ciclicamente, le prestazioni potrebbero essere migliorate mettendo in cache i vari script. Abilitando PHP OPcache, il processo verrà eseguito una volta e memorizzerà nella cache tutti gli script. Gli script verranno archiviati in memoria e solo gli aggiornamenti verranno compilati e continueranno a essere archiviati.

OPCACHE può darti un notevole incremento delle prestazioni e può ridurre significativamente il tempo di caricamento del sito web. PHP7 OPcache utilizza 64 MB di memoria per impostazione predefinita. Non sono necessarie librerie esterne per abilitare questa estensione.

Come funziona OPCACHE

Di seguito l’immagine del funzionamento di PHP7 OPcache.

Come funziona OPCACHE
Come funziona la pipeline di OPcache

Ogni volta che lo script viene richiamato, il processo controlla la cache OPcode di PHP e cerca il codice già compilato nella memoria condivisa. Se il codice non viene trovato, avvia automaticamente la compilazione e la salva nella memoria.

Perché conviene attivare OPCACHE

Consideriamo un caso in cui si dispone di un sito Web di piccole dimensioni con il traffico normale, ad esempio 500-5k di visitatori al giorno. Gli utenti attivi simultaneamente sono relativamente pochi, 5-10 in media. In questo caso difficilmente si hanno problemi di sovraccarico e di prestazioni, gli utenti non noteranno rallentamenti.

Altro caso sarebbe un sito Web o un’applicazione con centinaia di migliaia di visitatori al secondo. Qui PHP7 OPcache può dare forte aiuto in termini di prestazioni, in quanto riduce drasticamente il carico del server e con pochi passaggi di configurazione vedrai miglioramenti seri in termini di velocità e prestazioni.

OPcache da solo non può essere la soluzione a tutti i tuoi problemi di performance. Anche le impostazioni e la configurazione del server hanno un ruolo importante per massimizzare le prestazioni. Facendo un esempio pratico, un server con 1GB di RAM e 1 CPU ospitato su Digitalocean, può gestire circa 10 richieste al secondo. Abilitando il sistema OPcache PHP il numero aumenta tranquillamente a 34+ richieste al secondo.

Ridurre i tempi di download con OPCACHE
Ridurre i tempi di download delle pagine con OPCACHE

Come si installa OPCACHE

OPcache è presente di default su tutte le versioni PHP5.5 e successive. Tuttavia, in certi casi potrebbe essere disabilitato, ogni hosting provider ha le sue policy. Per iniziare a utilizzare OPcache in PHP5.5 + devi prima abilitarlo manualmente attraverso il file di configurazione php.ini.

Come configurare OPCACHE

Il file di configurazione si chiama php.ini e la sua posizione cambia in base al sistema operativo e web server installato, alcune possibilità sono:

  • Apache: /etc/php5/apache2/php.ini
  • Nginx PHP-FPM: /etc/php5/fpm/php.ini
  • Nginx PHP-FPM: /etc/php/7.0/fpm/php.ini

Per abilitare OPcache cerca e cambia la seguente linea come indicato:

;opcache.enable=0

Cambia in:

opcache.enable=1

La modifica toglie la punteggiatura iniziale per abilitare la riga di codice e cambia il valore da “0” a “1” per attivare il comando. Nel linguaggio di programmazione 0 significa spento, 1 significa acceso.

Di seguito ti indico la configurazione ideale per un server con 4 GB RAM e 2 vCPUs.

...
[opcache]
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=240
opcache.fast_shutdown=1
...

Modifica la quantità di RAM utilizzata da OPcache

Con OPcache devi trovare un compromesso tra la velocità e la quantità di RAM utilizzata. Maggiore è la quantità di RAM che si è disposti a dedicare alla memorizzazione dell’opcode, maggiore è l’opcode che può essere memorizzato. Non è detto che aumentando il valore le cose migliorino per forza, ad un certo punto il rendimento cala perché alcuni codici vengono eseguiti raramente, oppure il tuo codice potrebbe non essere così grande da occupare tutta la memoria dedicata.

Vale la pena giocare con questa impostazione per vedere dove si ottiene il migliore compromesso tra prestazioni e RAM. Questa impostazione è definita in megabyte.

; opcache.memory_consumption = 64

Cambia in:

opcache.memory_consumption = 128

Aumenta il numero di script che possono essere memorizzati nella cache

Nelle impostazioni di OPcache possiamo anche definire il numero di script che vengono memorizzati nella cache. Il valore minimo è 200 ed il valore massimo è 10.000.

; opcache.max_accelerated_files = 2000

Cambia in:

opcache.max_accelerated_files = 4000

Anche in questo caso devi verificare quanti script vengono effettivamente usati dal tuo sistema, non serve alzare il valore e basta. Procedi con la guida per sapere come controllare questi valori.

Modifica la frequenza di riconvalida

Per assicurarti che l’OPcache noti quando cambi il tuo codice PHP, puoi impostare la frequenza di rinnovo. Fondamentalmente, questo comando dirà alla cache quanto spesso controllare il timestamp sui file PHP. Il valore è misurato in secondi.

; opcache_revalidate_freq = 2

Cambia in:

opcache_revalidate_freq = 240

Se i tuoi script PHP non cambiano mai puoi valutare valori più lunghi in modo da stressare di meno il server.

Verificare che PHP OPcache Mod sia abilitato

Assicurati che OPcache sia abilitato. Con PHP 5 digita nella shell questo comando.

# PHP 5.x:
sudo php5enmod opcache

# PHP 7.x:
sudo phpenmod opcache

Ora riavvia PHP.

  • sudo service php7.0-fpm restart

Hai solo bisogno di riavviare il tuo web server per attivare OPCACHE.

  • Server Web Apache: sudo service apache2 restart
  • Nginx Web-Server: sudo service nginx restart

Con versioni successive di PHP puoi testare OPCACHE con il comando phpinfo(). Dovresti essere pronto per iniziare a utilizzare OPcache di PHP.

Verificare lo stato di OPCACHE

Il modo tradizionale per verificare se la cache PHP di OPcode è in esecuzione sul server è scrivere phpinfo(); in un file php e vedere lo stato.

Ecco un estratto del file con phpinfo():

Se vuoi vedere la GUI – interfaccia grafica con cui gestire report ed impostazioni, puoi utilizzare i pacchetti open source disponibili su Github:

Interfaccia grafica per OPCACHE
Interfaccia grafica per OPCACHE

Con queste semplici GUI puoi monitorare la memoria usata in tempo reale, il numero di script in memoria ed eliminare la cache di singoli script. Installare queste GUI è semplice, due di quelle indicate infatti richiedono solo di creare un file nel web server.

Verificare le performance

Attendi qualche giorno dopo aver attivato OPCache poi controlla il report crawl in Google Search Console. Dovresti notare un calo del tempo medio di download delle risorse, questo significa che Googlebot potrà scansionare più pagine nello stesso arco di tempo rispetto al server senza OPCache.

Riduzione dei tempi di download con OPCache
Riduzione dei tempi di download con OPCache

A questo punto spero che, leggendo questa guida, tu sia convinto ad attivare PHP OPcache nel tuo web server. Il caching del codice è una grande idea che permette di non compilare il codice più e più volte dato che il codice viene compilato solo quando viene aggiornato e quindi salvato nella memoria condivisa. OPCACHE consente di risparmiare tempo e offre un incremento sensibile delle prestazioni.

Se hai ulteriori domande su OPcode in PHP o su questo articolo, puoi scrivere i tuoi commenti qui sotto.

Articoli correlati

Autore

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi articoli aggiornati

Richiedi un preventivo SEO e Google Ads

Porta il tuo sito web al livello successivo con l’expertise di EVE Milano. La nostra agenzia di Search Marketing ha ricevuto oltre 1130 richieste di preventivo, un segnale chiaro della fiducia che imprenditori e manager, come te, ripongono nella nostra specializzazione tecnica e verticale nella SEO e PPC. Se la tua organizzazione cerca competenze specifiche per emergere nei risultati di Google, noi siamo pronti a fornire quel valore aggiunto. Affidati alla nostra esperienza per fare la differenza.
Richiedi un preventivo

Non perderti altre guide, iscriviti per ricevere un avviso mensile con gli aggiornamenti del blog!

Iscriviti alla newsletter!

Informativa sui cookies

Noi e terze parti selezionate utilizziamo cookie o tecnologie simili per finalità tecniche e, con il tuo consenso, anche per le finalità di esperienza e misurazione come specificato nella cookie policy. Puoi liberamente prestare, rifiutare o revocare il tuo consenso, in qualsiasi momento, accedendo al pannello delle preferenze. Il rifiuto del consenso può rendere non disponibili le relative funzioni. Usa il pulsante “Accetta” per acconsentire. Usa il pulsante “Rifiuta” per continuare senza accettare.