Estás cansado da execução lenta de scripts PHP e do fraco desempenho das aplicações? Tens dificuldade em otimizar o teu código e reduzir os tempos de carregamento? Se sim, não estás sozinho. Muitos programadores enfrentam estes desafios quando trabalham com aplicações PHP.
Felizmente, existe uma solução: OPcache.
Este poderoso cache de opcode armazena bytecode de script PHP pré-compilado em memória compartilhada, reduzindo o tempo que leva para seus scripts serem executados. Por conseguinte, melhora o desempenho da sua aplicação PHP, permitindo-lhe concentrar-se no que realmente importa: proporcionar uma excelente experiência ao utilizador.
Nesta postagem do blog, vou guiá-lo pelo processo de instalação e configuração do OPcache com seu aplicativo PHP. Mais importante ainda, verás como a Cloudways simplificou a integração do OPcache com aplicações baseadas em PHP. Portanto, se estiveres a usar o nosso alojamento web PHP, este artigo vai ajudar-te muito.
Breve descrição geral da OPcache
OPcache armazena bytecode de script pré-compilado em memória compartilhada, melhorando o desempenho do PHP. Armazena em cache o opcode, permitindo que os scripts sejam servidos diretamente do cache. Isso reduz o uso da CPU e da memória, otimizando a utilização de recursos e melhorando a escalabilidade da aplicação PHP.
Com o OPcache ativado, os scripts são armazenados na memória e apenas as atualizações são compiladas. Elimina a necessidade de o PHP recompilar scripts, reduzindo a sobrecarga do servidor e acelerando a execução do PHP. Isto resulta num carregamento mais rápido da página web e numa experiência de utilizador mais suave.
Como é que a OPcache funciona?
O PHP OPcache aumenta o desempenho verificando se há bytecode de script pré-compilado na memória compartilhada cada vez que um script é compilado. Se o código não for encontrado, o OPcache o compila automaticamente e o salva na memória, gerando a saída depois.
O diagrama abaixo ilustra o processo de execução de código com o PHP OPcache, explicando claramente como funciona.

PHP Framework Hosting [A partir de 11$ de crédito]
- Encenação gratuita
- Backup gratuito
- PHP 8.0
- Websites ilimitados

OPcache vs Outros Caching
Diferentes aplicações precisam de diferentes tipos de cache. O PHP OPcache é ótimo para acelerar o PHP. Esta tabela compara diferentes opções de cache.
| Funcionalidade | PHP OPcache | APCu | Memcached |
| Mecanismo de cache | Cache de código de operação | Cache de dados do utilizador | Cache distribuída |
| Integração | Inclui o PHP | Extensão separada | Serviço separado |
| Instalação | Fácil | Fácil | Requer a configuração do servidor |
| Desempenho | Excelente | Bom desempenho | Excelente |
| Escalabilidade | NA | NA | Elevada |
| Suporte para dados do utilizador | Não | Sim | Sim |
| Mecanismo de armazenamento | Na memória | Na memória | Distribuído (RAM) |
| Expiração da cache | NA | Apagar TTL ou Manual | Apaga TTL ou Manual |
| Invalidação da cache | Automático (alteração de ficheiro) | Limpeza manual | Limpa manualmente |
| Apoio comunitário | Forte | Forte | Forte |
| Casos de utilização | Usado principalmente para cache de opcode para acelerar a execução do PHP | Mais adequado para o armazenamento em cache de dados específicos do utilizador ou cenários de armazenamento em cache distribuído. | Mais adequado para armazenar em cache dados específicos do utilizador ou cenários de armazenamento em cache distribuído. |
Porque deves usar a OPcache?
O PHP OPcache é essencial para qualquer aplicação web baseada em PHP, melhorando o desempenho e a experiência do utilizador. Armazena bytecode pré-compilado na memória, eliminando a análise e compilação repetitivas de scripts PHP.
Isto permite que os servidores lidem com mais pedidos de forma eficiente, facilitando o escalonamento de aplicações web sem aumentar os recursos do servidor. O OPcache também reduz as operações de E/S do disco, acelerando a execução do PHP e melhorando a capacidade de resposta do site.
Com a sua compatibilidade com o PHP, fácil integração e escalabilidade, o OPcache é imprescindível para qualquer ambiente de servidor PHP, melhorando o desempenho e a fiabilidade das aplicações web baseadas em PHP.
Desempenho da OPcache
Encontrei um estudo de caso sobre como a OPcache melhorou o desempenho de um site. Um utilizador chamado Tschallacka partilhou a configuração do seu servidor e a forma como os pedidos foram atendidos rapidamente. O estudo de caso mostra como a OPcache pode acelerar e melhorar o desempenho de uma aplicação.
Sem OPcache
Ao usar este script sem OPcache, eu envio 9000 pedidos em 2,8 segundos para o servidor Apache. Atinge o máximo de 90-100% da CPU por 70-80 segundos até que consiga atender a todos os pedidos.
Tempo total gasto: 76085 milissegundos (76 segundos)
Com o OPcache
Com o OPcache ativado, ele é executado a 25-30% do tempo de CPU por cerca de 25 segundos e nunca passa de 25% de uso da CPU.
Tempo total gasto: 26490 milissegundos (26 segundos)
Criei um ficheiro OPcache blacklist para desativar o cache de tudo, exceto da estrutura, que é toda estática e não precisa de mudar de funcionalidade.
Escolho explicitamente os ficheiros da estrutura para desenvolver sem me preocupar em recarregar/validar os ficheiros da cache. Ter tudo em cache poupa um segundo no total dos pedidos, 25546 milissegundos
Isto aumenta significativamente a quantidade de dados/pedidos que posso tratar por segundo sem que o servidor tenha de suar.
Requisitos do sistema
Para usar o OPcache, você precisa compilá-lo como uma extensão compartilhada. Se você desabilitou as extensões padrão, você deve compilar o PHP com a opção –enable-opcache. Então, tu podes carregar a extensão OPcache no PHP usando a diretiva de configuração zend_extension.
Com o PHP 5.5 e posterior, não precisas do APC ou de extensões de cache de bytecode semelhantes porque o OPcache está integrado no núcleo do PHP. Isso proporciona melhor estabilidade e é oficialmente suportado pelos desenvolvedores do PHP.
Desbloqueia todo o potencial do PHP com a integração do OPcache
Cloudways + OPcache: A combinação perfeita para um site de alto desempenho.
Instalar e configurar o OPcache
Apesar de a última atualização tornar a OPcache compatível com o PHP 8, os especialistas recomendam que os utilizadores optem pelo PHP v5 e v7. Para começar a utilizar a OPcache, tens de a ativar manualmente. Para tal, terás de fazer o seguinte:
Adiciona a seguinte linha ao teu php.ini:
zend_extension=/full/path/to/opcache.so (nix) zend_extension=C:\path\to\php_opcache.dll (win)
Nota que, quando o caminho contém espaços, deves colocá-lo entre aspas:
zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll"
Além disso, terás de utilizar a diretiva zend_extension em vez da diretiva de extensão “normal” porque afecta o motor Zend (ou seja, a coisa que corre o PHP).
Para PHP 5.4 ou anterior (>= 5.2), podes instalar o Zend OPcache usando o PECL. $ pecl install zendopcache-beta
O comando pecl tentará atualizar automaticamente a tua configuração php.ini.
Agora que configuraste a OPcache corretamente, é altura de atualizar a definição recomendada para otimização do desempenho. As definições são as seguintes:
opcache.memory_consumption=128 (para guardar em cache todos os ficheiros compilados) opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 (por defeito pode guardar 2000 ficheiros) opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
Algumas outras definições podem ser úteis, por exemplo, se estiveres a utilizar anotações de código, podes utilizar:
opcache.save_comments=1
Podes ver a lista completa de configurações de tempo de execução aqui.
OPcache com outros CMS/Framework
Embora a PHP OPcache possa melhorar o desempenho, é essencial monitorizar o comportamento da cache e ajustar as definições com base nas necessidades da tua aplicação.
WordPress
- Verifica a compatibilidade: Antes de ativar a PHP OPcache, certifica-te de que o teu alojamento para WordPress e a versão do WordPress são compatíveis com a OPcache.
- Plugin de cache: Utiliza um plugin de cache especificamente concebido para o WordPress, como o W3 Total Cache ou o WP Super Cache. Estes plugins podem ajudar-te a gerir as definições de cache, incluindo a integração do PHP OPcache.
- Ajuste fino: Considera o ajuste fino das configurações do PHP OPcache dependendo do ambiente de hospedagem. Ajusta o opcache.memory_consumption, opcache.max_accelerated_files e opcache.revalidate_freq com base nos requisitos do teu site.
- Mecanismo de limpeza de cache: Implementa um mecanismo de limpeza de cache para garantir que, quando actualizas plug-ins, temas ou conteúdos, as alterações são reflectidas corretamente. Alguns plug-ins de cache tratam disso automaticamente.
Drupal
- Compatibilidade de versões: Certifica-te de que estás a usar o Drupal 7 ou o Drupal 8+, pois as versões anteriores podem não suportar totalmente o PHP OPcache.
- Módulos de cache: O Drupal tem módulos como o “APC” e o “Memcache” que podem ser usados em conjunto com o PHP OPcache para melhorar a cache.
- Ajuste do OPcache: Ajusta as definições da OPcache na configuração do PHP para otimizar o consumo de memória e o número de ficheiros em cache com base no tamanho e complexidade do teu site Drupal.
- Expiração da cache: Implementa um mecanismo de expiração da cache para lidar eficazmente com actualizações e alterações de conteúdos.
Laravel
- Extensão OPcache: Verifica se a extensão OPcache está instalada e activada na tua configuração PHP para que o Laravel a utilize.
- Otimização com Artisan: A ferramenta de linha de comando Artisan do Laravel fornece um comando otimizado que pré-compila classes, reduzindo significativamente o tempo necessário para carregar arquivos.
- Configurações do OPcache: Ajustar as definições do OPcache na tua configuração PHP ou usar um pacote como o “opcache-dashboard” para monitorizar e ajustar as definições a partir do Laravel (a Cloudways também oferece alojamento Laravel gerido)
Usando o OPcache no Cloudways
Uma vez que a Cloudways acredita em proporcionar facilidade aos seus clientes, permite-te alterar as definições de memória a partir das definições do servidor e do separador de pacotes.
Lembra-te que não tens acesso ao ficheiro php.ini, por isso serão aplicados os valores por defeito definidos pela Cloudways. Podes alterar o tamanho da memória de ambas as opções de acordo com os requisitos da tua aplicação.

Os valores de configuração predefinidos são os seguintes:
opcache.interned_strings_buffer=4 opcache.max_accelerated_files=2000 opcache.memory_consumption=64 opcache.revalidate_freq=2 opcache.fast_shutdown=0 opcache.enable_cli=0
GUI gráfico do OPcache
A maneira tradicional de verificar se o cache PHP OPcode está sendo executado no servidor é escrever phpinfo(); no arquivo .php e ver o status:

Mas se quiseres ver a GUI gráfica optimizada com interação do utilizador, na qual podes ter a opção de gerir definições com botões, então podes utilizar os pacotes de código aberto disponíveis no GitHub. Por isso, podes utilizar os seguintes pacotes para este trabalho.
1. OPcacheGUI
O OPcacheGUI permite-te gerir as funcionalidades do OPcache como o estado, configurações, reset, visão geral dos scripts, etc, com uma interface agradável. Também podes ver a memória, as chaves e o estado dos hits em forma gráfica. Assim, simplifica o processo geral de dados para os utilizadores.

– Fonte: GitHub/PeeHaa
2. OPcache-Status
OPcache-Status fornece a página de status de uma página para o cache PHP OPcode. Algumas outras coisas que ele pode fazer por ti são:
- A capacidade de ordenar a lista de scripts em cache pelas várias colunas;
- Um layout melhor que pode acomodar mais dados do script sem parecer desordenado;
- Um separador de sugestões de afinação (primeiro, precisa de adicionar algumas coisas à saída da OPcache).

– Fonte: GitHub/rlerdorf
3. OPcache-GUI
OPcache-GUI dá-te uma interface de utilizador fácil de usar para as definições da OPcache, construída com jQuery e React. Podes ver informações como o teu host, plataforma, versão e quando foi reiniciado pela última vez. Mostra também todas as funções disponíveis e estatísticas importantes como o número de acessos e a utilização de memória.

– Fonte: GitHub/amnuts
Cloudways + OPcache – A melhor combinação para sites rápidos
Começa com 3 meses de teste gratuito:
Escalonamento automático para sítios com muitos meios de comunicação
SSL grátis para carregamentos seguros
Apoio especializado 24 horas por dia, 7 dias por semana
Resumo
Neste momento, já deves estar convencido dos benefícios de integrar a PHP OPcache nas tuas aplicações web. Esta poderosa ferramenta revolucionou o desempenho do PHP, fornecendo um grande impulso à velocidade e eficiência das suas aplicações web.
Com o armazenamento de código em cache, já não tens de perder tempo a compilar código repetidamente. Em vez disso, o código só é compilado quando é atualizado e, em seguida, guardado na memória partilhada para um acesso extremamente rápido. Isso economiza tempo e recursos, resultando em um desempenho perfeito.
Não percas a oportunidade de levar o desempenho do teu PHP para o próximo nível com a OPcache!
Q. O que é a OPcache PHP?
A. OPcache é uma extensão PHP que melhora o desempenho ao armazenar em cache scripts PHP pré-compilados na memória, reduzindo a necessidade de compilação repetitiva de scripts.
Q. Devo ativar a OPcache?
A. Sim, a ativação da OPcache é recomendada para ambientes de produção, uma vez que aumenta significativamente o desempenho e reduz a carga do servidor.
Q. Como ativar a OPcache em PHP?
A. Para ativar a OPcache:
- Abre o ficheiro php.ini.
- Adiciona ou certifica-te de que a linha opcache.enable=1 está presente.
- Reinicia o servidor Web para aplicar as alterações.
Q. Qual é a diferença entre PHP JIT e OPcache?
A. O OPcache armazena em cache scripts PHP pré-compilados para reutilização, enquanto o PHP JIT (Just-In-Time) compila o código PHP em código de máquina nativo em tempo de execução para otimização adicional do desempenho.
Q. O que fazer se o PHP Opcache não estiver a funcionar?
A. Se a Opcache do PHP não funcionar corretamente, vai ao ficheiro php.ini e verifica a secção Opcache. Certifica-te de que opcache.enable=1 está definido neste ficheiro. Se não estiver, então define-o em conformidade.
Shahzeb Ahmed
Um criativo de dia (com uma chávena de chá) e um criativo de noite. Ahmad Kamran é um escritor de conteúdos sazonais e Executivo de Marketing Sénior na Cloudways. Podes encontrá-lo na sua secretária a escrever, a criar estratégias ou a jogar jogos. E, caso não o encontres aqui, ele estará nas montanhas ou à beira do rio.