RoadRunner é um servidor de aplicativos PHP de alto desempenho de código aberto (licenciado pelo MIT), gerenciador de processos escrito em Go e alimentado com plug-ins. Ele oferece suporte à execução como um serviço com a capacidade de estender sua funcionalidade por projeto com plug-ins.
RoadRunner apresenta uma variedade de plug-ins, incluindo servidores HTTP(S)/2/3
e fCGI
que são compatíveis com os padrões PSR-7/PSR-17. Este é apenas um dos seus muitos recursos. Ele serve como uma alternativa eficaz à configuração tradicional Nginx+FPM, proporcionando melhor desempenho e mais flexibilidade. Suas extensas opções de plugins vão muito além de apenas servidores HTTP(S)/2/3
e fCGI
, oferecendo uma ampla gama de funcionalidades:
gRPC
, http
, jaeger
).gRPC
. Para maior velocidade, a extensão protobuf
pode ser usada.HTTP(S)/2/3
e fCGI
apresentam gerenciamento automático de TLS , suporte a 103 Early Hints e middleware como: Static, Headers, gzip, prometheus (metrics), send (x-sendfile), OTEL, proxy_ip_parser, etc.Site Oficial | Documentação | Fórum | Cronograma de lançamento | Pergunte ao Guru do RoadRunner
A maneira mais fácil de obter a versão mais recente do RoadRunner é usar um dos binários de lançamento pré-construídos, que estão disponíveis para OSX, Linux, FreeBSD e Windows. As instruções para usar esses binários estão na página de lançamentos do GitHub.
Para obter o arquivo binário do roadrunner você pode usar nossa imagem docker: ghcr.io/roadrunner-server/roadrunner:2024.XX
(mais informações sobre imagem e tags podem ser encontradas aqui).
FROM ghcr.io/roadrunner-server/roadrunner:2024.X.X AS roadrunner
FROM php:8.3-cli
COPY --from=roadrunner /usr/bin/rr /usr/local/bin/rr
# USE THE RR
Configuração localizada no arquivo .rr.yaml
(amostra completa):
Você também pode instalar o RoadRunner automaticamente usando o comando fornecido com o pacote do compositor, execute:
composer require spiral/roadrunner-cli
./vendor/bin/rr get-binary
O binário do servidor estará disponível na raiz do seu projeto.
Observação
As extensões do PHP
php-curl
ephp-zip
são necessárias para baixar o RoadRunner automaticamente. As extensões do PHPphp-sockets
precisam ser instaladas para executar o roadrunner. Verifique comphp --modules
suas extensões instaladas.
wget https://github.com/roadrunner-server/roadrunner/releases/download/v2024.X.X/roadrunner-2024.X.X-linux-amd64.deb
sudo dpkg -i roadrunner-2024.X.X-linux-amd64.deb
curl --proto ' =https ' --tlsv1.2 -sSf https://raw.githubusercontent.com/roadrunner-server/roadrunner/master/download-latest.sh | sh
brew install roadrunner
choco install roadrunner
A configuração pode estar localizada no arquivo .rr.yaml
(amostra completa):
version : ' 3 '
rpc :
listen : tcp://127.0.0.1:6001
server :
command : " php worker.php "
http :
address : " 0.0.0.0:8080 "
logs :
level : error
Leia mais em Documentação.
<?php
use Spiral RoadRunner ;
use Nyholm Psr7 ;
include " vendor/autoload.php " ;
$ worker = RoadRunner Worker:: create ();
$ psrFactory = new Psr7 Factory Psr17Factory ();
$ worker = new RoadRunner Http PSR7Worker ( $ worker , $ psrFactory , $ psrFactory , $ psrFactory );
while ( $ req = $ worker -> waitRequest ()) {
try {
$ rsp = new Psr7 Response ();
$ rsp -> getBody ()-> write ( ' Hello world! ' );
$ worker -> respond ( $ rsp );
} catch ( Throwable $ e ) {
$ worker -> getWorker ()-> error (( string ) $ e );
}
}
Importante
Se você vir o erro EOF
, verifique se instalou os pacotes PHP desta etapa. Se isso não ajudar, tente executar o comando php worker.php
diretamente e verifique a saída.
Para executar o servidor de aplicativos:
$ ./rr serve -c .rr.yaml
A licença MIT (MIT). Consulte LICENSE
para obter mais informações. Mantido por Spiral Scout.
Obrigado a todas as pessoas que já contribuíram!