Aceleradores PHP: Quais são os melhores e como ativá-los?

Por Leandro Lopes 26/08/2022
21 Min Leitura
Aceleradores PHP: Quais são os melhores e como ativá-los?
Aceleradores PHP: Quais são os melhores e como ativá-los?

Os aceleradores PHP melhoram substancialmente o desempenho de software baseado em PHP, como o WordPress. A execução de sites de alto tráfego alimentados por aplicativos PHP só é possível devido aos aceleradores PHP. Seus benefícios de desempenho variam muito, pois dependem de vários fatores, incluindo outras otimizações que você pode precisar aplicar em seu site.

Neste artigo, você aprenderá como os aceleradores PHP funcionam, por que você precisa deles, quais aceleradores PHP são os melhores para o seu site WordPress e como você pode instalá-los e configurá-los.

Animado? Vamos começar!

O que são aceleradores PHP?

Um acelerador PHP é uma extensão PHP que melhora o desempenho de aplicativos PHP. Essas extensões funcionam armazenando em cache o opcode (ou código de operação) gerado por arquivos PHP. Por esse motivo, os aceleradores PHP também são chamados de Opcode Caching.

Como funciona um acelerador PHP (ou Opcode Caching)
Como funciona um acelerador PHP (ou Opcode Caching)

Os scripts PHP são escritos em sintaxe legível por humanos, mas um servidor (ou uma unidade de processamento central) não pode entender esse código diretamente. Ele precisa ser convertido em um formato que o servidor possa ler diretamente. É aí que entra o Opcode.

Opcode é parte da instrução de linguagem de máquina que direciona o servidor sobre quais operações realizar. Geralmente, essas instruções são bastante simples, como adicionar dois números ou concatenar duas ou mais strings. Outras partes das instruções de linguagem de máquina incluem operandos , itens que o opcode manipula.

Toda vez que um usuário solicita algo em seu site, gerar o opcode a partir de scripts PHP pode ser altamente desgastante para seu servidor web. Primeiro, os scripts precisam ser tokenizados e analisados ​​para gerar uma árvore de sintaxe abstrata (AST), que é então compilada para criar o opcode.

Em alguns casos extremos, esse processo pode levar seu site a um rastreamento para muitos usuários. Se o número de solicitações for grande, o servidor atingirá o tempo limite para muitos usuários, impedindo-os de acessar o site completamente.

Você pode contornar esse problema armazenando o opcode como um cache (OpCache) depois de gerado. Você pode então servi-lo diretamente para todos os usuários subsequentes sem envolver o servidor. Isso é exatamente o que um acelerador PHP faz.

Não é incomum ver um site WordPress acelerar de duas a três vezes (ou mais) depois de instalar e configurar um acelerador PHP.

Leia também

Os melhores aceleradores PHP

O PHP foi lançado em 1995, tornando-se uma das linguagens server-side mais antigas atualmente. Ao longo de sua vida, houve muitos aceleradores (opcode caching) implementados para ele, mas para configurações de servidor executadas no Linux, há basicamente apenas uma solução bem mantida e útil: PHP OPcache .

Para aplicativos PHP executados no Windows e no Windows Server, há um acelerador PHP alternativo chamado Windows Cache Extension for PHP . Além disso, existem muitas extensões para adicionar recursos ao cache de opcode interno do PHP. Vou cobrir todos eles neste artigo.

PHP OPcache (Zend OPcache)

A extensão PHP OPcache faz com que o código PHP seja executado mais rápido por meio de cache de opcode e outras técnicas de otimização. É empacotado junto com o PHP 5.5 e versões posteriores.

O PHP OPcache também é chamado de Zend OPcache, pois é uma implementação da extensão de cache do opcode do Zend . Zend manteve esta extensão proprietária até o lançamento do PHP 5.5. Portanto, para muitos usuários, o Alternative PHP Cache (APC) foi a solução para o cache de opcode em PHP.

Depois que a Zend abriu o código para seu cache de opcode e o lançou como uma extensão chamada Zend OPcache, o PHP 5.5 o tornou parte de seu núcleo e o tem usado como a solução de cache de opcode padrão desde então.

PHP OPcache funciona armazenando o cache opcode na memória compartilhada
PHP OPcache funciona armazenando o cache opcode na memória compartilhada

PHP OPcache melhora o desempenho armazenando o bytecode pré-compilado na memória compartilhada do servidor quando qualquer script PHP é executado pela primeira vez. Isso elimina a leitura e compilação de código PHP para acesso futuro. O PHP OPcache também aplica padrões de otimização de bytecode adicionais para tornar a execução do código PHP mais rápida.

Cache de usuário da APC (APCu)

O Alternative PHP Cache (APC) é um acelerador PHP gratuito e de código aberto. Assim como o Zend OPcache, ele foi projetado principalmente para armazenar em cache a saída do opcode PHP na memória compartilhada do servidor. Como sempre foi FOSS, era a solução de cache de opcode mais popular para PHP até alguns anos atrás.

Depois que o PHP OPcache se tornou parte do PHP 5.5, o desenvolvimento da APC diminuiu consideravelmente e é considerado morto agora. No entanto, alguns recursos da APC ainda não estão disponíveis no PHP OPcache. Uma delas é a funcionalidade de cache de memória compartilhada userland. Também é conhecido como “cache de dados na memória”.

Para resolver esse problema, os desenvolvedores da APC retiraram todos os recursos de cache do opcode e o lançaram como uma extensão separada chamada APCu . Ele adiciona suporte para cache de usuário de variáveis ​​PHP.

Você também pode instalar o Módulo de compatibilidade com versões anteriores do APCu para usar o APCu como substituto do APC nas versões modernas do PHP.

Você aprenderá mais tarde como habilitar e configurar PHP OPcache e APCu em seu servidor.

Extensão de Cache do Windows para PHP

A Extensão de Cache do Windows para PHP é um acelerador de PHP que acelera o software PHP no Windows e no Windows Server. Ele não inclui suporte para cache de opcode, pois o PHP já o inclui em seu núcleo, mas inclui 4 tipos exclusivos de cache:

  • Cache de arquivo — PHP OPCache armazena em cache apenas o opcode gerado por scripts PHP. O mecanismo PHP ainda precisa acessar os arquivos de script no servidor. A execução de operações de arquivo pode levar a uma sobrecarga de desempenho significativa, portanto, essa extensão inclui um cache de arquivo que pode armazenar scripts PHP na memória compartilhada.
  • Resolver o cache de caminho de arquivo — A maioria dos scripts PHP usa caminhos de arquivo relativos para se referir a cada arquivo exclusivo. O mecanismo PHP precisa convertê-los em caminhos de arquivo absolutos para acessá-los. Se houver muitos arquivos referenciados assim, isso pode levar a problemas de desempenho. Esta extensão armazena os mapeamentos de todos os caminhos de arquivo relativos e absolutos de antemão para que o mecanismo PHP não gaste muito tempo resolvendo caminhos de arquivo.
  • Cache de usuário — Este cache funciona de forma semelhante ao cache de memória compartilhada userland do APCu. Os scripts PHP podem usar APIs de cache do usuário para armazenar objetos e variáveis ​​no cache do usuário e reutilizá-los em solicitações subsequentes. Não apenas melhora o desempenho dos scripts PHP, mas também permite que o mecanismo PHP compartilhe dados entre vários processos PHP.
  • Manipulador de Sessão — Armazena os dados da sessão PHP na memória compartilhada do servidor para evitar a execução de operações do sistema de arquivos para leitura e gravação de dados da sessão. É útil se uma enorme quantidade de dados estiver sendo gerada em uma única sessão PHP.

A maioria das instalações do WordPress usa um servidor Linux. Caso você seja um dos doze usuários que usam um Windows Server para executar seu site, você pode aprender mais sobre como instalar e configurar o WinCache em seu manual online.

Instalando e Configurando o PHP OPcache

Para PHP 5.5 e superior, o PHP compila o OPcache por padrão como uma extensão compartilhada durante a instalação do PHP. No entanto, se você especificou a diretiva –disable-all ao instalar o PHP, então você precisa permitir OPcache explicitamente especificando a diretiva –enable-opcache .

Depois de compilar a extensão OPcache, você precisa habilitá-la e configurar suas variáveis.

Você deve usar a diretiva zend_extension para habilitar a extensão OPcache. Para fazer isso, adicione todo o código a seguir ao seu arquivo php.ini.

[dt_code]zend_extension=/full/path/to/opcache.so[/dt_code]

Nota: Se você tem uma instalação de servidor não padrão e não conhece o caminho completo, então você pode especificar a diretiva extension_dir para dizer ao PHP para procurar por extensões carregadas dinamicamente nesse diretório. Além disso, para instalações baseadas no Windows, o caminho é C:\path\to\php_opcache.dll .

Depois de ativar o OPcache, você precisa aplicar as configurações corretas para obter o máximo desempenho dele. Para a maioria dos casos de uso, você pode adicionar as seguintes configurações ao seu arquivo php.ini:

[dt_code]opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1[/dt_code]

Aqui está um detalhamento de todas as diretivas e o que elas fazem:

  • opcache.memory_consumption : Configura o tamanho do armazenamento de memória compartilhada disponível para OPcache. O valor é especificado em megabytes e seu valor padrão para PHP 7.0 e superior é 128 , mas você pode definir mais do que isso, se necessário.

Antes de alterar esse valor, certifique-se de que seu servidor tenha espaço de memória compartilhada suficiente para outros serviços, como MySQL.

  • opcache.interned_strings_buffer : Especifica a quantidade de memória disponível para armazenar strings internas. O internamento de strings é um método de otimização de desempenho em que apenas uma cópia de cada string distinta é armazenada na memória, tornando as tarefas de processamento de strings eficientes em termos de espaço e tempo.

Seu valor padrão é 8 megabytes. Você pode aumentar seu valor para 16 se estiver executando muito código em seu site.

  • opcache.max_accelerated_files : Define o número máximo de scripts PHP que podem ser armazenados na tabela de hash OPcache. Seu valor mínimo é 200 , mas você pode configurá-lo para 1000000 no PHP 5.5.6 e versões posteriores. Você deve observar que o valor real usado pelo OPcache será o primeiro número primo mais próximo do valor e não o valor em si.

Para encontrar o valor perfeito para definir aqui, você pode contar o número de arquivos PHP em seu servidor Linux executando o

[dt_code]find . -type f -print | grep php | wc -l[/dt_code]

comando no seu terminal. Defina o valor desta diretiva maior que a contagem de arquivos PHP em seu servidor. Para a maioria das instalações do WordPress, defini-lo para 10.000 seria o ideal.

  • opcache.revalidate_freq : Direciona o OPcache sobre a frequência com que ele precisa verificar os carimbos de data e hora do script para quaisquer atualizações. Seu valor é definido em segundos. Se você definir como 0 , o OPcache verificará as atualizações em cada solicitação, o que equivale a não ter nenhum cache de opcode ativado.
    Se você não tiver muitas atualizações frequentes em seu site, poderá definir esse valor para 3600 segundos. Para fins de desenvolvimento, você pode desabilitar por recurso definindo a diretiva opcache.validate_timestamps como 0 .
  • opcache.fast_shutdown : Habilita a sequência de desligamento rápido para OPcache. Ele acelera o tempo de resposta e reciclagem dos PHP workers para que eles estejam prontos para solicitações adicionais imediatamente. O OPcache consegue isso usando o gerenciador de memória Zend Engine para cancelar a atribuição de todas as solicitações de uma só vez.

Desde o PHP 7.2, uma variante desta diretiva foi integrada ao núcleo do PHP e será usada automaticamente sempre que possível.

  • opcache.enable_cli: Habilita o cache de opcode para a versão CLI do PHP. Definir o sinalizador como 1 habilitará o cache de opcode em seu servidor. Você pode desabilitar o cache de opcode para desenvolvimento e teste definindo seu sinalizador como 0 .
    Para mais detalhes e definições de diretivas OPcache que você pode usar, consulte o manual de configuração de tempo de execução do PHP OPcache . Se você estiver alternando entre o estágio de desenvolvimento e produção, é recomendável se familiarizar com todas as diretivas do OPcache para tirar o máximo proveito de todas elas.

Verificando o status do PHP OPcache

Você pode verificar o status do OPcache em seu servidor executando a função opcache_get_status() .

Se o OPCache estiver habilitado em seu servidor, ele retornará um array contendo todas as propriedades de cache do opcode. Aqui está um exemplo de saída desta função . Se o OPcache estiver desabilitado em seu servidor, ele retornará apenas false .

Você pode conectar o parâmetro opcional get_scripts a essa função para obter informações de estado específicas do script. Como alternativa, você também pode usar a função opcache_get_configuration() para obter informações de configuração do OPcache, incluindo INI, lista negra e a versão do OPcache em uso.

Para uma lista detalhada de todas as funções do OPcache, você pode consultar o manual de funções do PHP OPcache .

Monitorando e Gerenciando PHP OPcache

Existem muitas extensões PHP que permitem gerenciar os recursos do OPcache com facilidade por meio de uma interface gráfica. Duas das extensões mais recomendadas para esta finalidade são OpCacheGUI e opcache-gui (nomes semelhantes, mas extensões diferentes).

Extensão OpCacheGUI para PHP
Extensão OpCacheGUI para PHP

Enquanto OpCacheGUI é a extensão mais bonita das duas, a extensão opcache-gui é atualizada regularmente para funcionar com as versões mais recentes do PHP. Você pode usar qualquer um deles para gerenciar e monitorar o PHP OPcache facilmente.

Painel para extensão PHP opcache-gui
Painel para extensão PHP opcache-gui

Instalando e Configurando o APCu

Você pode instalar a extensão APCu do repositório PECL ou diretamente do PHP. Execute o seguinte comando no seu terminal para começar:

[dt_code]sudo apt-get install php7.3-apcu[/dt_code]

Nota: Dependendo da sua versão do PHP, você precisa usar a diretiva correta. Aqui está o PHP 7.3, mas você pode ter uma versão diferente do PHP instalada em seu servidor.

Durante a instalação, você pode se deparar com dúvidas sobre como configurar o APCu em seu servidor. Escolha os padrões para todos eles.

Em seguida, verifique o arquivo php.ini e adicione a linha abaixo se ainda não tiver sido adicionada pelo PHP.

[dt_code]extension=apcu.so[/dt_code]

Isso habilitará o módulo apc.so em seu servidor depois que ele for reiniciado. Para servidores em execução no NGINX, você deve usar o seguinte comando:

[dt_code]sudo service php7.3-fpm restart
sudo service nginx reload[/dt_code]

Se o seu servidor estiver usando o Apache, você pode usar o seguinte comando:

[dt_code]sudo service apache2 reload[/dt_code]

As configurações padrão do APCu são perfeitas para a maioria das configurações, incluindo instalações do WordPress. No entanto, se você estiver pensando em ajustá-los, poderá ler todas as opções de configuração do APCu disponíveis.

Por exemplo, a diretiva apcu.shm_size é definida como 32M por padrão. Se você achar que o APCu está ficando sem espaço alocado na memória compartilhada, então você pode alocar mais espaço para o APCu adicionando a diretiva apcu.shm_size com um valor personalizado em seu valor php.ini .

Nota: APCu nas versões PHP 7+ não tem compatibilidade total com a APC. Se você precisar, também precisará instalar a extensão APCu Backwards Compatibility (apc-bu) do repositório PECL.

Para obter informações mais detalhadas e altamente técnicas sobre a APCu, você pode conferir sua documentação TECHNOTES.

Limpar OpCache com WP Rocket

Quando você altera seu código PHP ou adiciona novos scripts, pode ser necessário limpar o cache do opcode em seu site. Embora você possa fazer isso via terminal, o WP Rocket possui uma opção integrada para fazer isso com o clique de um botão.

Para fazer isso, vá para Configurações> WP Rocket no painel de administração do WordPress e clique no botão PURGE OPCACHE .

Limpe o OPcache facilmente com o WP Rocket
Limpe o OPcache facilmente com o WP Rocket

Se você não tiver essa opção disponível no painel de configurações do WP Rocket, seu servidor não foi configurado para usar o OPcache ou o host desativou a limpeza do OPcache via API adicionando a diretiva opcache.restrict_api no php.ini Arquivo. Você pode ler mais sobre esse recurso na documentação do WP Rocket.

Resumo sobre Aceleradores PHP

A funcionalidade OPcache padrão do PHP fornece uma melhoria de desempenho notável para sites WordPress. Na maioria das vezes, os ganhos de velocidade são até 3 vezes maiores. Se você tiver um site de tráfego médio a alto, é altamente recomendável habilitar o cache de opcode em seu servidor. Além disso, eles podem fazer a diferença se você quiser corrigir um administrador do WordPress lento .

Quanto ao melhor acelerador PHP, há apenas um que funciona perfeitamente para o cache de opcode hoje, e esse é o OPcache embutido do PHP. Você também pode instalar a extensão APCu PHP para aproveitar sua funcionalidade de cache de memória compartilhada na área de usuário.

Espero que este artigo tenha respondido a todas as suas perguntas sobre aceleradores PHP. Comece a acelerar o seu site agora!

Nossa Equipe é especializada em acelerar websites wordpress, entre em contato conosco!

Conheça nossos serviços e siganos nas redes sociais: Intagram e LinkeDin!

Assine nossa Newsletter!

Fique por dentro das últimas atualizações de desempenho do WordPress e da web.
Direto para sua caixa de entrada a cada duas semanas.

Compatilhe este Conteúdo
Postado por Leandro Lopes
Seguir
É especialista em WordPress com mais de 10 anos de experiência no CMS, além de experiência em provedores de hospedagem, banco de dados, front-end e back-end em desenvolvimento web. Trabalhou ou teve participação em projetos ligado à empresas: Hopi Hari, iG, entre muitos outros