Você desenvolvedor PHP: quer deixar sua aplicação 2x mais rápida e gastando metade da memória RAM que ela consome hoje? Então continue lendo:
Muitos não sabem, mas o PHP desde sua versão 5.5.0 possui um cache de bytecodes integrado, chamado Zend OPcache. Vou explicar, o PHP é uma linguagem interpretada, isso significa que ao executar um script PHP, este será passado pelo interpretador, que possui a missão de realizar o parse deste script para uma linguagem de nível intermediário, chamada de bytecode, é importante deixar claro que essa ainda não é uma linguagem de máquina, um processo “secundário” ainda irá ler, processar e transformar este bytecode em linguagem de máquina… Ai você me pergunta, e daí?
Calma que estou chegando lá: para simplificar o entendimento, imagine que toda vez que um usuário acessa uma página PHP, o servidor que suporta sua aplicação — lê o script PHP, gera o bytecode e transforma isso em linguagem de máquina. A etapa mais lenta deste processo está justamente na leitura do script e criação do bytecode. E se fosse possível fazer o cache do bytecode, isso iria acelerar todo o processe, já que essa é a ponta mais lenta da cadeia.
O Zend OPcache é o cara responsável por fazer cache de bytecode. Em meus testes, uma aplicação que consumia 10.5 Mega de memória RAM e levava 1:35 segundos sem o OPcache, passou a consumir somente 3.02 Mega de memória RAM e a carregar em 128 milissegundos após habilitar esse recurso no modo produção. O ganho no tempo de carregamento das páginas foi de: 90,30%
Os dados acima representam uma métrica de consumo para 1 usuário, imagina o ganho quando falamos de milhares de usuários acessando por hora!
Para concluir: já disponibilizei em meu repositório no Docker Hub os containeres preparados para rodar aplicações PHP com OPcache instalado e configurado bonitinho :)
Link dos containers:
https://hub.docker.com/r/fabiojanio/php-apache
https://hub.docker.com/r/fabiojanio/php-apache-nodejs