[PHP CACHE] OPcache - Instalando e usar

Todo mundo sabe que cache é a primeira coisa a se fazer para melhorar a performance de uma aplicação. O que muitos devs não sabem é que o PHP já vem com o OPcache desde a versão 5.5 ou superior, mas calma, se você não usa esta versão do PHP não se preocupe, não vai afetar seus arquivos PHP, a configuração é feita dentro do php.ini.

Como funciona?

Sempre que requisitamos um arquivo PHP ele faz todo o processo que já conhecemos, carrega os arquivos, debug, executa o código, enfim... isso não é o importante. Ao final ele gera um bytecode com tudo pronto, imagine se ao invés de utilizar o arquivo PHP em si ele apenas pegasse esse bytecode e pronto, muito mais rápido.
O OPcache faz exatamente isso, e é muito simples de habilitar.

Fazendo funcionar

Primeiro descubra aonde o seu arquivo php.ini está, isso é muito simples, apenas rode um phpinfo() criando um arquivo php com o seguinte código:

phpinfo();
E no navegador (ou no terminal) encontre a linha Configuration File (php.ini) Path, pronto, você achou o php.ini.
Abra o php.ini e adicione a seguinte linha:
extension=php_opcache.dll
Ao rodar você pdoe ter uma mensagem de erro, se este for o seu caso tente o código abaixo ao invés do anterior.
zend_extension=php_opcache.dll
Ela pode ficar junto com as outras instruções de carregamento de extensões, você sód eve tomar o cuidado de adicionar antes do carregamento da extensão do XDebug (se tiver instalado, claro), se não vai dar erro.
Pronto, instalado.

Configurando

O meu php.ini já trouxe uma sessão com exemplos de configuração,s e o seu também tiver, estude esta parte do arquivo com calma e entenda o que cada parâmetro faz.
Atualmente estou usando esta configuração:
opcache.validate_timestamp = 1
opcache.revalidate_freq = 0
opcache.memory_consumption = 64
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 4000
opcache.fast_shutdown = 1
Você pode colocar depois da linha de carregamento da extensão.
O importante é entender a primeira linha, o ideal para ambientes de produção é que seja passado um 0, assim o PHP não vai checar se houve mudança no arquivo, porém para ambientes de desenvolvimento isso pode dar dor de cabeça, já que você vai ter que limpar o cache "na mão".
Para limpar o cache manualmente apenas rode o comando opcache_reset(), claro que você vai precisar de um arquivo parecido com este:

opcache_reset();
Agora é só usar a criatividade pra usá-lo, pode ser em linha de comando, no navegador ou até colocar em um executável nas variáveis de ambiente:
php opcache_reset.php
No Windows este arquivo se chamaria opcachereset.bat e no Linux e no Mac apenas opcachereset, sem extensão.

Checando

Logo após reiniciar o server verifique no phpinfo() se o bloco Zend OPcache existe e se o status Opcode Caching é Opcode Caching e o Optimization é Enabled, se estiver assim, você fez tudo certo.

Conclusão

O OPcache é uma solução incrível que o PHP 5.5 trouxe para melhorar a performance da sua aplicação, é só ativar pra usar, não precisa configurar nada no seu projeto (o que aumenta a compatibilidade da aplicação). O único ponto é que você precisa encontrar uma hospedagem que já tenha suporte ao PHP 5.5 e o OPcache ativado, claro que se você tem um Cloud (ou afins) não vai ter problema.

Comentários

Mensagens populares