PHP – Opções de cache de opcode

Como todos sabemos PHP é uma linguagem interpretada. Portanto toda vez que um script é executado, o engine do PHP precisa compilar o código fonte em algo que a linguagem de máquina possa entender. Resultando em um bytecode que no caso chamamos de opcode. O opcode é gerado em cada requisiçao. Imagine então o trabalho do php engine quando utilizamos um framework MVC onde existem vários arquivos para serem compilados em uma mesma requisição.

Para ajudar na otimização desse processo podemos utilizar um cache de opcode, da forma como vimos no post anterior sobre o APC. Mas como funciona exatamente um cache de opcode ? Quando uma nova requisição é realizada, antes do php compilar o código fonte, o software de cache intercepta e verifica se o opcode do script já existe no cache. Caso não exista, o sistema de cache passa para o php engine gerar o opcode e o armazena no cache. Nas requisições subsequentes para o mesmo script o opcode irá ser obtido à partir do cache e não será necessário ser compilado pelo engine do php novamente. Esse processo economiza de forma considerável o processamento de CPU no servidor. É claro que se houver mudanças no código fonte em um script que já tenha o opcode no cache, a mudança será identificada pelo sistema de cache que irá proceder com a devida atualização.

Já vimos em um post anterior como instalar e configurar o APC que é uma das opções disponíveis para cache de opcode. Abaixo vamos fazer uma análise breve de algumas das outras principais opções disponíveis.

Opções de aceleradores de código PHP

  • eAccelerator – É um fork do antigo e conhecido Turck MMCache.  Acelera o código PHP de 1 até 10 vezes. Suporta PHP 4 e 5, incluindo a versão 5.3. O projeto incluia também um PHP Encoder que foi descontinuado em 2006. Neste link é realizado um benchmarking comparando um desenpenho entre os caches APC, XCache e eAccelerator em uma aplicação rodando Drupal. O eAccelerator teve melhor desempenho nos requisitos de velocidade e utilização de memória. Com a utilização do cache a aplicação teve um ganho de velocidade em 3x.
  • APC – Alternative PHP Cache, é um cache de opcode livre e grátis, desenvolvido pela equipe de programadores do php. É o mais utilizado, distribuído através de um pacote PECL e será incluído no core do PHP à partir da versão 5.4. Fácil de instalar, principalmente em distribuições de Linux como o Ubuntu. Se você fizer uma pesquisa na internet sobre aceleradores php, o APC é o mais recomendado. Suporta todas versões do PHP.
  • XCache – É um cache bastante popular conhecido pelo desempenho e estabilidade. Foi criado pelo mesmo desenvolvedor do lighttpd. É muito comum em ambientes de produção que possuem grandes volumes de acesso. Esta disponível para as versões mais recentes do php, incluíndo  versões de php para Windows. Foi desenvolvido com o intuito de sanar as limitações existentes nas outras plataformas de cache de opcode.
  • Zend Server  –  É uma opção comercial que além de incluir o cache de opcode inclui diversas outras soluções interessantes para ajudar desenvolvedores. O configurador de cache do Zend_Server possui parâmetros interessantes que merecem atenção (Verificar este link). Ótima opção para quem deseja investir em uma ferramenta comercial para essa finalidade.

Conclusão

Na minha opinião APC, eAccelerator e XCache são ótimas opções de software livre de cache de opcode. Aconselho você experimentar essas opções e fazer sua escolha. Vejo muitos comentários positivos na internet sobre essas 3 opções.  Em minha experiência tive mais contato com APC portanto no momento é o meu favorito.  Utilizar um acelerador  para PHP aumenta significativamente o desempenho de  sua aplicação e geralmente a instalação de uma ferramenta desse tipo é simples.  Porém não se esqueça de dar atenção para outros métodos de otimização de sua aplicação. No meu blog existem várias dicas de tuning para melhorar o desempenho.

Referências

Espero que a leitura desse artigo junto com a referências abaixo te ajude a escolher a melhor opção de cache de opcode para sua necessidade.

http://www.ducea.com/2006/10/30/php-accelerators/
http://stackoverflow.com/questions/930877/apc-vs-eaccelerator-vs-xcache
http://2bits.com/articles/benchmarking-drupal-with-php-op-code-caches-apc-eaccelerator-and-xcache-compared.html

 

Please follow and like us:

Follow

Get every new post on this blog delivered to your Inbox.

Join other followers: