O servidor de aplicações PHP moderno, escrito em Go
FrankenPHP é um novo servidor de aplicações para aplicações PHP (construído sobre o Caddy) e uma biblioteca para incorporar o interpretador PHP em servidores web Go.
curl https://frankenphp.dev/install.sh | shComece!
Tenha um servidor PHP de nível de produção instalado e funcionando com apenas um comando!
# Instala o FrankenPHP no Linux ou macOS
curl https://frankenphp.dev/install.sh | sh
# Ou no Windows, com PowerShell
irm https://frankenphp.dev/install.ps1 | iex
# Serve o diretório public/
frankenphp php-server -r public/
# Executa um script de linha de comando
frankenphp php-cli script.php# Serve o diretório public/
docker run -v $PWD:/app/public \
-p 443:443/tcp -p 443:443/udp \
dunglas/frankenphp
# Executa um script de linha de comando
docker run -v $PWD:/app \
dunglas/frankenphp php script.phpAnatomy of a modern PHP server.
Every part was stitched on for a reason. Here's what keeps the creature alive.
The bolts
Automatic HTTPS
Certificates issued, renewed and revoked for you, with Let's Encrypt or ZeroSSL.
The brain
Worker mode
Boots your app once and keeps it in memory, ready in milliseconds.
The stitches
Caddy inside
The official PHP executor sewn into Caddy, with every Caddy module at hand.
One binary. No PHP-FPM.
Modo worker
public/index.php
<?php
// Boot your app once
require __DIR__.'/vendor/autoload.php';
$app = new \App\Kernel();
$app->boot();
$handler = static function () use ($app) {
echo $app->handle($_GET, $_POST, $_COOKIE, $_FILES, $_SERVER);
};
// …then serve request after request
while (\frankenphp_handle_request($handler)) {
gc_collect_cycles();
}Script worker
Inicie sua aplicação uma vez e ela permanece na memória!
Direto
Suportado nativamente pelo Symfony, API Platform, Laravel...
Simples
Usa superglobais simples: não precisa de PSR-7.
Rápido
De acordo com nossos benchmarks, 3,5x mais rápido que o FPM em aplicações da API Platform.
Eficiente
O FrankenPHP foi escrito em Go e C. Ele conta com o recurso icônico do Go: goroutines!
Opcional
Sua aplicação pode ser servida como está, mesmo que não seja compatível com o modo worker.
Fácil implantação
Executa em processo: um binário, nenhum serviço externo necessário.
Watcher
Reinicie automaticamente o worker sempre que seu código for alterado.
Caddyfile
localhost {
# Habilita a compressão (opcional)
encode zstd br gzip
# Executa arquivos PHP no diretório atual e serve os assets
php_server
}Tão fácil de configurar!
Três linhas de configuração: agora isso é tudo o que você precisa para iniciar um servidor PHP de nível de produção (HTTPS automático, HTTP/3, compressão zstd...), desenvolvido com Caddy.
- HTTPS ✓
- HTTP/3 ✓
- zstd · br · gzip ✓
- Early Hints ✓
FrankenPHP em resumo
Extensível
Compatível com PHP 8.2+, a maioria das extensões PHP e todos os módulos Caddy.
Apenas um serviço
Projetado com simplicidade em mente: apenas um serviço, apenas um binário! O FrankenPHP não precisa do PHP-FPM, ele usa sua própria SAPI, especialmente desenvolvida para servidores web Go.
Fácil implantação
Aplicação nativa em nuvem enviada como uma imagem Docker. Compatível com Kubernetes e todas as plataformas de nuvem modernas. Também é possível empacotar sua aplicação PHP como um binário estático independente e autoexecutável.
Modo worker
Inicie sua aplicação uma vez e mantenha-a na memória! Ela estará pronta para processar requisições recebidas em poucos milissegundos.
103 Early Hints
Early Hints são um novo recurso da plataforma web que pode melhorar o tempo de carregamento de sites em 30%. O FrankenPHP é a única SAPI PHP com suporte a Early Hints!
Em tempo real
Hub Mercure integrado. Envie eventos das suas aplicações PHP para todos os navegadores conectados, e eles receberão o payload instantaneamente como um evento JavaScript!
Compressão Brotli, Zstandard e Gzip
Formatos de compressão modernos são suportados imediatamente.
Logging estruturado
Traga um formato e detalhes mais definidos para seu logging.
Métricas e rastreamento do Prometheus
Suporte integrado ao Prometheus!
HTTP/2 e HTTP/3
Suporte nativo a HTTPS, HTTP/2 e HTTP/3.
Automação HTTPS
Geração, renovação e revogação automáticas de certificados HTTPS.
Recarga graciosa
Implante suas aplicações sem tempo de inatividade graças a recargas graciosas.
Born in a lab. Written in Go.
FrankenPHP is a Caddy module and a library: embed the PHP interpreter in any Go program and serve PHP scripts through net/http.
server, _ := frankenphp.NewServer("public/")
frankenphp.Init(frankenphp.WithServer(server))
defer frankenphp.Shutdown()
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
server.ServeHTTP(w, r)
})PHP mais moderno do que nunca!
- Utiliza o executor PHP oficial incorporado em um servidor web de última geração: Caddy
- Suporte nativo a HTTP/1.1, HTTP/2 e HTTP/3
- Geração e renovação automática de certificados HTTPS (Let's Encrypt ou ZeroSSL)
- Copie seus arquivos PHP para o diretório raiz, só isso!
- Crie binários independentes, autoexecutáveis e sem dependências para suas aplicações web PHP e ferramentas de linha de comando.
- Extensões PHP populares, incluindo OPcache e XDebug, têm suporte nativo!
Need a hand? We've got heart.
Les-Tilleuls.coop, the cooperative behind FrankenPHP, helps teams migrate, host and speed up their PHP apps.