OPcache no PHP: o que faz, como ligar, e por que as alterações às vezes não aparecem

PHP e ProgramaçãoVersões e configurações do PHP··· 1.197 visualizações· 4 min de leitura

Sempre que alguém visita uma página PHP, o PHP lê os arquivos do código e traduz-os para um formato interno antes de os executar. O OPcache guarda essa tradução em memória e reutiliza-a, por isso as visitas seguintes poupam esse trabalho. Aqui ele existe mas vem desligado por padrão: liga-se em Select PHP Version. Ajuda sobretudo quando o código é grande, como numa aplicação com muitos arquivos ou num WordPress carregado de plugins.

Como ligar e confirmar

1 No cPanel, abra Select PHP Version (seção Software) e escolha a versão que o site usa. Cada versão do PHP tem a sua lista de extensões ligadas.
2 Abra a aba Extensions e marque a caixa opcache. O passo a passo geral está em ativar ou desativar uma extensão do PHP.
3 Confirme com um arquivo que contenha <?php phpinfo(); na pasta do site: deve aparecer uma seção chamada Zend OPcache. Apague o arquivo logo a seguir.
4 Meça de novo. O ganho vê-se no tempo de resposta das páginas que não saem do cache de páginas. Veja TTFB alto.

O que esperar, e o que não

Situação O que o OPcache faz
Site com cache de páginas bem configurado Pouco: a maior parte das visitas nem chega ao PHP. Veja LiteSpeed Cache.
Páginas que não se podem guardar em cache (loja, área de membros, painel) Muito: cada visita corre PHP, e poupa-se a leitura e a tradução do código.
Uma aplicação grande (framework, loja) Bastante: tem muitos arquivos a ler a cada pedido. Veja pôr uma aplicação Laravel a funcionar.
Um banco de dados lento Nada. O OPcache só trata do código, não das consultas. Veja consultas lentas.

Por que as minhas alterações não aparecem

Com o OPcache ligado, o PHP guarda o código e só volta a verificar se o arquivo mudou de tempos a tempos (o intervalo é o opcache.revalidate_freq, que a documentação do PHP indica como poucos segundos por padrão). Por isso uma edição pode demorar um instante a aparecer. Se passou muito tempo e continua vendo a versão antiga, a causa raramente é o OPcache. Verifique, por esta ordem:

1 O cache do navegador. Janela anônima, ou Ctrl+Shift+R. Veja limpar o cache: a do navegador, a do computador e a do site.
2 O cache de páginas do site (o plugin, ou um serviço à frente). Faça “Purge All”.
3 Editou o arquivo certo? A pasta do site pode ter outra cópia, ou o tema filho ter prioridade.
4 Só então o OPcache. Para o ver fora de jogo, desmarque a caixa em Select PHP Version, repita o teste e volte a marcar. Se a diferença desaparece, o OPcache era o culpado, e então desligue-o enquanto trabalha no código.
Não o deixe ligado num site que está programando a cada minuto sem contar com o atraso. Muitos programadores ligam-no só em produção. E se um plugin ou uma aplicação gera arquivos PHP e os executa logo a seguir, pode ver-se código antigo durante um instante.
É um acelerador, não uma cura. Se o site está lento por imagens pesadas, plugins a mais ou uma consulta lenta, o OPcache não resolve. Veja o que realmente faz diferença num site lento.

Ligou o OPcache e não aparece no phpinfo, ou o site ficou pior? Envie-nos o endereço e a versão do PHP.

Abrir um pedido de suporte

VEJA TAMBÉM

Ativar ou desativar uma extensão do PHP

TTFB alto: onde se perde o tempo do servidor

Ver e ajustar a configuração do PHP

Planos de hospedagem e o que cada um inclui

PRODUTO RECOMENDADO

Hospedagem de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 36,30/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.