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

Sempre que alguém visita uma página PHP, o PHP lê os ficheiros 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 omissão: liga-se em Select PHP Version. Ajuda sobretudo quando o código é grande, como numa aplicação com muitos ficheiros ou num WordPress carregado de plugins.

Como ligar e confirmar

1 No cPanel, abra Select PHP Version (secçã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 o separador Extensions e marque a caixa opcache. O passo a passo geral está em ligar ou desligar uma extensão do PHP.
3 Confirme com um ficheiro que contenha <?php phpinfo(); na pasta do site: deve aparecer uma secção chamada Zend OPcache. Apague o ficheiro logo a seguir.
4 Meça de novo. O ganho vê-se no tempo de resposta das páginas que não saem da 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 configurada 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 ficheiros a ler a cada pedido. Veja pôr uma aplicação Laravel a funcionar.
Uma base de dados lenta Nada. O OPcache só trata do código, não das consultas. Veja consultas lentas.

Porque é 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 ficheiro mudou de tempos a tempos (o intervalo é o opcache.revalidate_freq, que a documentação do PHP indica como poucos segundos por omissão). Por isso uma edição pode demorar um instante a aparecer. Se passou muito tempo e continua a ver a versão antiga, a causa raramente é o OPcache. Verifique, por esta ordem:

1 A cache do navegador. Janela privada, ou Ctrl+Shift+R. Veja limpar a cache: a do navegador, a do computador e a do site.
2 A cache de páginas do site (o plugin, ou um serviço à frente). Faça “Purge All”.
3 Editou o ficheiro 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á a programar 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 ficheiros 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

Ligar ou desligar 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

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?