Skip to content

Instantly share code, notes, and snippets.

@cristopher-rodrigues
Last active August 29, 2015 14:11
Show Gist options
  • Select an option

  • Save cristopher-rodrigues/91a95309e1e9ba0ed96d to your computer and use it in GitHub Desktop.

Select an option

Save cristopher-rodrigues/91a95309e1e9ba0ed96d to your computer and use it in GitHub Desktop.
HHVM

2014/12/09

PHP HHVM +18

CGI, FASTCGI, WSGI, FPM

Cache, mod_php, compiladores opcodes

HHVM (Instalando e configurando), Hack Lang

CGI, FASTCGI, WSGI, FPM

Como todos sabem o funcionamento de cliente servidor é feito com uma requisição e uma resposta. PHP é uma linguagem interpretada, logo sua performance depende de seu interpretador e dos seus componentes, onde o fluxo singular da-se: O cliente efetua uma requisição para um servidor WEB o qual encaminha a requisição para o interpretador que em um processo separado, executa o código e gera um conteúdo dinâmico a partir do script PHP, esse método é denominado CGI (Common Gateway Interface), como um contrato entre servidor http e aplicação. Cada requisição gera um novo pedido, um novo processo para o interpretador, mais processos, mais sobrecarga e afogamento dos recursos de máquina para não mais a execução do PHP, como também para a inicialização do interpretador e demais processos do ecossistema. CGI supria sim, páginas estáticas e ficheiros no século passado quando ainda a internet não demandava do produto mais importante de nossa era A INFORMAÇÃO.

FastCGI por outro lado, utiliza processos persistentes, efetiva a gestão de processos, elimina o overhead, onde uma requisição-uma resposta, o servidor inicia um processos para múltiplas respostas (TCP/Socket/multiplexação). Tornando assim possível a execução do código independente do servidor web. Logo, múltiplas máquinas para seu processo FastCGI. 

Os processos para instalação e configuração de ambientes FastCGI você pode consultar nesse link (FastCGI).

(FALTA: WSGI, FPM)

Cache, mod_php, compiladores opcodes

(FALTA: CACHE, mod_php, compiladores opcodes)

HHVM (Instalando e configurando), Hack Lang

Então em 2008 o Facebook entrou em cena. Primeiro eles criaram um compilador PHP-to-C++, a qual transforma o código PHP em uma AST e, depois, em C++ que é compilado estaticamente. COMPILAR É CHATO PRA CARAMBA E DEMORA.

Então desenvolver um interpretador para desenvolvimento mantendo o compilador em produção resolveria o stress e a demora.

Porém pelos ambientes: produção/desenvolvimento, serem diferentes isso acarretou no primeiro problema e o uso de diferentes ASTs causou mais lentidão do que o mecanismo ZEND utilizado anteriormente. Então em 2011, nasceu a HHVM. Mecanismo JIT e deployment unificado. 

A missão era converte PHP em bytecode e interpretar em um compilador JIT. Assim, o interpretador funciona como um fallback para o JIT.

Ao final do ano de 2013, foi criado o suporte a FastCGI no HHVM, servidores web Apache 2 ou Nginx. Bastando para o funcionamento alterar a forma de comunicação para socket.

Mão na massa! 

Para tal vamos usar uma box Vagrant, onde as configurações você pode consultar no link para download (BOX VAGRANT HHVM). Caso você ainda não conheça o Vagrant você pode dar uma olhada esse outro texto onde falo um pouco dele.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment