vcampitelli/slides-como-php-executado-web
do GitHub
$ git clone --recursive git@github.com/vcampitelli/slides-como-php-executado-web.git
docs/index.html
Continua... »
demo
, temos 5 pastas com aplicações de demonstração, cada uma
com uma configuração de Docker Compose e rodando em uma porta
diferente:
Pasta | Porta |
---|---|
01-built-in | 8001 |
02-apache | 8002 |
03-nginx-fpm | 8003 |
04-serverless | - |
05-swoole | 8005 |
06-roadrunner | 8006 |
07-frankenphp | 8007 |
demo/app
e instale as dependências:
$ ./install
O PHP possui um servidor embutido desde a versão 5.4 (de 2012), que pode ser utilizado para desenvolvimento e testes rápidos através do comando abaixo:
$ php -S <endereço>:<porta>
PHP: Built-in web server
demo/01-built-in
$ docker compose up -d
PHP_CLI_SERVER_WORKERS
para
permitir requisições simultâneas para o próprio servidor
Servidor Web criado em 1995 por desenvolvedores da NCSA (Universidade de Illinois), que por muitos anos dominou totalmente o mercado, mas que atualmente vem perdendo espaço — embora ainda sirva cerca de 16% dos sites do mundo
Desde 1999, é mantido pela Apache Software Foundation
About the Apache HTTP Server Project
No modelo mais antigo de execução (chamado prefork), um interpretador do PHP é
embutido no Apache em um módulo chamado mod_php
Quando uma requisição chega, o módulo executa os scripts PHP e retorna a resposta para o cliente
demo/02-apache
$ docker compose up -d
O nginx é um servidor HTTP extremamente performático, mas que não possui interpretador PHP embutido, necessitando de um serviço externo para processar nossa aplicação
Através do protocolo FastCGI, podemos usá-lo junto com o PHP-FPM
demo/03-nginx-fpm
$ docker compose up -d
O AWS Lambda não possui suporte nativo ao PHP, mas permite facilmente configurarmos um ambiente (chamado runtime) para executarmos qualquer tipo de aplicação
Além do Vapor, a ferramenta mais conhecida para executar PHP em ambientes do Labmda é o bref.sh
Como o Bref funciona?
demo/04-serverless
.env
$ docker compose up
A parallel network communication engine based on asynchronous event-driven and coroutine, written in C++, providing coroutine and high-performance network programming support for PHPSwoole
demo/05-swoole
$ docker compose up -d
RoadRunner is a high-performance PHP application server, load-balancer, and process manager written in GolangRoadRunner
Projeto que começou em 2017 e teve sua primeira versão lançada em janeiro de 2018, tornou-se muito conhecido por ser o primeiro modelo de execução em PHP a permitir a criação de servidores gRPC com a linguagem
Você pode escolher entre o servidor Web próprio ou com nginx através do FastCGI
gRPC | RoadRunnerdemo/06-roadrunner
$ docker compose up -d
FrankenPHP is a modern application server for PHP built on top of the Caddy web server.FrankenPHP
Projeto começou em 2021, mas teve sua primeira versão oficial em 2023, causando um certo rebuliço na comunidade devido à sua alta performance
FrankenPHPPossui dos modelos de execução:
Modo Clássico
Modelo parecido com o do PHP-FPM, em que se configura o número inicial e máximo de threads para processar as requisições
Using Classic Mode - FrankenPHPModo Worker
A aplicação é inicializada uma única vez em memória, e cada requisição é recebida e executada pelos processos ativos
Using Workers - FrankenPHPdemo/07-frankenphp
$ docker compose up -d