0Pricing
PHP Academy · Aula

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=0

Principais 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 timestamps

validate_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-data

Compilaçã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=1255

Classes 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

  1. Análise de desempenho do PHP com Xdebug
  2. OPcache: cache de bytecode
  3. Otimização de consultas ao banco de dados
  4. Gerenciamento de memória e dicas de desempenho
← Voltar para PHP Academy