OPcache: caching del bytecode
Abilitare e ottimizzare OPcache per eliminare il costo della compilazione ripetuta degli script.
OPcache: caching del bytecode è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.
Come funziona normalmente PHP
Senza OPcache, ogni richiesta porta PHP a: leggere il file .php dal disco, analizzarlo in un AST, compilarlo in opcode (bytecode) e infine eseguire gli opcode.
Che cosa fa OPcache
OPcache memorizza gli opcode compilati nella memoria condivisa. Nelle richieste successive, PHP salta i passaggi di analisi e compilazione e passa direttamente all'esecuzione.
Impatto sulle prestazioni
In genere OPcache migliora di 2-5 volte il throughput delle applicazioni PHP senza richiedere modifiche al codice.
Abilitazione di OPcache
OPcache è incluso in PHP 5.5 e versioni successive e abilitato per impostazione predefinita in molte distribuzioni. Verifichi con php -m | grep -i opcache.
# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0Impostazioni principali di OPcache
Ottimizzi queste impostazioni per la produzione:
# php.ini:
opcache.memory_consumption=256 ; MB of shared memory
opcache.interned_strings_buffer=16 ; MB for interned strings
opcache.max_accelerated_files=20000 ; max scripts to cache
opcache.validate_timestamps=0 ; disable for production!
opcache.revalidate_freq=0 ; how often to check timestampsvalidate_timestamps=0
In produzione, imposti validate_timestamps=0 per disabilitare i controlli sul file system a ogni richiesta: PHP utilizzerà sempre gli opcode memorizzati nella cache. Dopo il deployment, reimposti la cache.
Reimpostazione di OPcache
Svuoti la cache dopo aver distribuito nuovo codice.
<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)opcache_get_status()
Interroghi le statistiche di OPcache durante l'esecuzione per monitorare la percentuale di hit e l'utilizzo della memoria.
<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";Precaricamento (PHP 7.4 e versioni successive)
Il precaricamento di OPcache carica i file del framework nella memoria condivisa all'avvio del server, eliminando anche il sovraccarico di compilazione della prima richiesta per le classi principali.
# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-dataCompilazione JIT (PHP 8.0 e versioni successive)
PHP 8 ha introdotto la compilazione JIT (Just-In-Time) basata su OPcache, che converte gli opcode in codice macchina nativo. Offre il massimo beneficio per le attività ad alta intensità di CPU e un beneficio marginale per le tipiche applicazioni web vincolate dall'I/O.
# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255Classi immutabili
OPcache può condividere stringhe internate e definizioni di classi immutabili tra i processi worker, riducendo il consumo di memoria per processo.
Riepilogo
Abiliti OPcache in produzione con validate_timestamps=0. Svuoti la cache dopo i deployment con opcache_reset() o riavviando PHP-FPM. Monitori la percentuale di hit con opcache_get_status().
Verifica rapida
Quale impostazione di php.ini deve essere impostata su 0 in produzione per ottenere le massime prestazioni da OPcache?
Domande Frequenti
La lezione «OPcache: caching del bytecode» è gratuita?
Sì — il testo completo di «OPcache: caching del bytecode» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.
Cosa imparerò in «OPcache: caching del bytecode»?
Abilitare e ottimizzare OPcache per eliminare il costo della compilazione ripetuta degli script. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare PHP Academy?
Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «OPcache: caching del bytecode»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione PHP Academy?
Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Profilazione di PHP con Xdebug
- OPcache: caching del bytecode
- Ottimizzazione delle query al database
- Gestione della memoria e consigli sulle prestazioni