OPcache: cache de bytecode
Habilite e ajuste o OPcache para eliminar o custo de compilar scripts repetidamente.
OPcache: cache de bytecode é uma aula grátis de PHP Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de PHP Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de PHP Academy inclui 4 aulas no total.
Como o PHP funciona normalmente
Sem o OPcache, cada solicitação faz o PHP: ler o arquivo .php do disco, analisá-lo em uma AST, compilá-lo em opcodes (código de bytes) e então executar os opcodes.
O que o OPcache faz
OPcache armazena opcodes compilados na memória compartilhada. Nas solicitações seguintes, o PHP ignora as etapas de análise e compilação — indo diretamente para a execução.
Impacto no desempenho
O OPcache normalmente proporciona uma melhoria de 2 a 5 vezes na capacidade de processamento de aplicações PHP, sem exigir alterações no código.
Ativando o OPcache
O OPcache vem incluído no PHP 5.5 ou posterior e é ativado por padrão em muitas distribuições. Verifique com php -m | grep -i opcache.
# php.ini:
[opcache]
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=0Principais configurações do OPcache
Ajuste estas configurações para produção:
# 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
Em produção, defina validate_timestamps=0 para desativar as verificações do sistema de arquivos em cada solicitação — o PHP sempre usará o opcode armazenado em cache. Após a implantação, redefina o cache.
Redefinindo o OPcache
Limpe o cache depois de implantar código novo.
<?php
opcache_reset(); // from a PHP script
// Or restart PHP-FPM:
$ kill -USR2 $(cat /run/php-fpm.pid)opcache_get_status()
Consulte as estatísticas do OPcache durante a execução para monitorar a taxa de acertos e o uso de memória.
<?php
$status = opcache_get_status();
echo "Hit rate: ".$status["opcache_statistics"]["opcache_hit_rate"]."%";Pré-carregamento (PHP 7.4 ou posterior)
O pré-carregamento do OPcache carrega arquivos do framework na memória compartilhada quando o servidor é iniciado — eliminando até mesmo o custo de compilação da primeira solicitação para as classes principais.
# php.ini:
opcache.preload=/srv/app/preload.php
opcache.preload_user=www-dataCompilação JIT (PHP 8.0 ou posterior)
O PHP 8 introduziu a compilação JIT (just-in-time) sobre o OPcache, convertendo opcodes em código de máquina nativo. O maior benefício ocorre em tarefas intensivas em CPU; para aplicações Web comuns limitadas por E/S, o ganho é marginal.
# php.ini:
opcache.jit_buffer_size=100M
opcache.jit=1255Classes imutáveis
O OPcache pode compartilhar strings internadas e definições de classes imutáveis entre processos de trabalho — reduzindo o consumo de memória por processo.
Resumo
Ative o OPcache em produção com validate_timestamps=0. Limpe o cache após as implantações com opcache_reset() ou reiniciando o PHP-FPM. Monitore a taxa de acertos com opcache_get_status().
Verificação rápida
Qual configuração do php.ini deve ser 0 em produção para obter o máximo desempenho do OPcache?
Perguntas Frequentes
A aula “OPcache: cache de bytecode” é grátis?
Sim — o texto completo de “OPcache: cache de bytecode” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de PHP Academy, atualize para CoddyKit PRO. O curso de PHP Academy inclui 4 aulas no total.
O que vou aprender em “OPcache: cache de bytecode”?
Habilite e ajuste o OPcache para eliminar o custo de compilar scripts repetidamente. Você pratica PHP Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar PHP Academy?
Nenhuma experiência prévia é necessária. PHP Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “OPcache: cache de bytecode”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de PHP Academy?
Sim. Cada aula de PHP Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Análise de desempenho do PHP com Xdebug
- OPcache: cache de bytecode
- Otimização de consultas ao banco de dados
- Gerenciamento de memória e dicas de desempenho