Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/pt-br/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ Adicione diretórios ao `.dockerignore`.

### Sem Docker (Linux e macOS)

[Siga as instruções para compilar a partir dos fontes](compile.md) e passe a
flag de configuração `--debug`.
[Siga as instruções para compilar a partir do código-fonte](compile.md) e passe
a flag de configuração `--debug`.

## Executando a suite de testes

Expand Down Expand Up @@ -199,7 +199,7 @@ docker buildx bake -f docker-bake.hcl --pull --no-cache --push
- [PHP embedding in Go (go-php)](https://github.com/deuill/go-php)
- [PHP embedding in Go (GoEmPHP)](https://github.com/mikespook/goemphp)
- [PHP embedding in C++](https://gist.github.com/paresy/3cbd4c6a469511ac7479aa0e7c42fea7)
- [Extending and Embedding PHP por Sara Golemon](https://books.google.fr/books?id=zMbGvK17_tYC&pg=PA254&lpg=PA254#v=onepage&q&f=false)
- [Extending and Embedding PHP, por Sara Golemon](https://books.google.fr/books?id=zMbGvK17_tYC&pg=PA254&lpg=PA254#v=onepage&q&f=false)
- [What the heck is TSRMLS_CC, anyway?](http://blog.golemon.com/2006/06/what-heck-is-tsrmlscc-anyway.html)
- [SDL bindings](https://pkg.go.dev/github.com/veandco/go-sdl2@v0.4.21/sdl#Main)

Expand Down
19 changes: 10 additions & 9 deletions docs/pt-br/README.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# FrankenPHP: Servidor de aplicações moderno para PHP
# FrankenPHP: um moderno servidor de aplicações para PHP

<h1 align="center"><a href="https://frankenphp.dev/pt-br"><img src="frankenphp.png" alt="FrankenPHP" width="600"></a></h1>

O FrankenPHP é um servidor de aplicações moderno para PHP, construído sobre o
O FrankenPHP é um moderno servidor de aplicações para PHP, construído sobre o
servidor web [Caddy](https://caddyserver.com/).

O FrankenPHP oferece superpoderes às suas aplicações PHP graças aos seus
recursos impressionantes: [_Early Hints_](early-hints.md),
[modo worker](worker.md), [recursos em tempo real](mercure.md), suporte
automático a HTTPS, HTTP/2 e HTTP/3...
O FrankenPHP superpoderes às suas aplicações PHP graças aos seus recursos
impressionantes: [_Early Hints_](early-hints.md), [modo worker](worker.md),
[recursos em tempo real](mercure.md), suporte automático a HTTPS, HTTP/2 e
HTTP/3...

O FrankenPHP funciona com qualquer aplicação PHP e torna seus projetos Laravel e
Symfony mais rápidos do que nunca, graças às suas integrações oficiais com o
Expand Down Expand Up @@ -56,7 +56,7 @@ frankenphp php-cli /caminho/para/seu/script.php

### Docker

Alternativamente, [imagens do Docker](docker.md) estão disponíveis:
Alternativamente, [imagens Docker](docker.md) estão disponíveis:

```console
docker run -v .:/app/public \
Expand Down Expand Up @@ -94,11 +94,12 @@ frankenphp php-server
## Documentação

- [Modo clássico](classic.md)
- [Modo Worker](worker.md)
- [Modo worker](worker.md)
- [Suporte a Early Hints (código de status HTTP 103)](early-hints.md)
- [Tempo real](mercure.md)
- [Servindo grandes arquivos estáticos com eficiência](x-sendfile.md)
- [Configuração](config.md)
- [Escrevendo extensões PHP em Go](extensions.md)
- [Imagens Docker](docker.md)
- [Implantação em produção](production.md)
- [Otimização de desempenho](performance.md)
Expand All @@ -109,7 +110,7 @@ frankenphp php-server
- [Integração com Laravel](laravel.md)
- [Problemas conhecidos](known-issues.md)
- [Aplicação de demonstração (Symfony) e benchmarks](https://github.com/dunglas/frankenphp-demo)
- [Documentação da biblioteca Go](https://pkg.go.dev/github.com/dunglas/frankenphp)
- [Documentação da biblioteca Go](https://pkg.go.dev/github.com/php/frankenphp)
- [Contribuindo e depurando](CONTRIBUTING.md)

## Exemplos e esqueletos
Expand Down
6 changes: 3 additions & 3 deletions docs/pt-br/classic.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ semelhante ao modo dinâmico do PHP-FPM.
As conexões enfileiradas aguardarão indefinidamente até que uma thread PHP
esteja disponível para servi-las.
Para evitar isso, você pode usar a
[configuração](config.md#configuracao-do-caddyfile) `max_wait_time` para limitar
o tempo que uma requisição pode esperar por uma thread PHP livre antes de ser
rejeitada.
[configuração](config.md#configuracao-do-caddyfile) `max_wait_time` na
configuração global do FrankenPHP para limitar o tempo que uma requisição pode
esperar por uma thread PHP livre antes de ser rejeitada.
Além disso, você pode definir um
[tempo limite de escrita razoável no Caddy](https://caddyserver.com/docs/caddyfile/options#timeouts).

Expand Down
18 changes: 9 additions & 9 deletions docs/pt-br/compile.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Compilar a partir dos fontes
# Compilar a partir do código-fonte

Este documento explica como criar um binário FrankenPHP que carregará o PHP como
uma biblioteca dinâmica.
Expand Down Expand Up @@ -29,10 +29,10 @@ brew link --overwrite --force shivammathur/php/php-zts

### Compilando o PHP

Alternativamente, você pode compilar o PHP a partir dos códigos-fonte com as
Alternativamente, você pode compilar o PHP a partir do código-fonte com as
opções necessárias para o FrankenPHP seguindo estes passos.

Primeiro, [obtenha os códigos-fonte do PHP](https://www.php.net/downloads.php) e
Primeiro, [obtenha o código-fonte do PHP](https://www.php.net/downloads.php) e
extraia-os:

```console
Expand Down Expand Up @@ -91,10 +91,10 @@ devem ser instaladas.
Alternativamente, esses recursos podem ser desabilitados passando as tags de
compilação para o compilador Go.

| Recurso | Dependência | Tag de compilação para desabilitá-lo |
|----------------------------------------|-----------------------------------------------------------------------|--------------------------------------|
| Compressão Brotli | [Brotli](https://github.com/google/brotli) | `nobrotli` |
| Reiniciar workers ao alterar o arquivo | [Watcher C](https://github.com/e-dant/watcher/tree/release/watcher-c) | `nowatcher` |
| Recurso | Dependência | Tag de compilação para desabilitá-lo |
|---------------------------------------|-----------------------------------------------------------------------|--------------------------------------|
| Compressão Brotli | [Brotli](https://github.com/google/brotli) | `nobrotli` |
| Reiniciar workers ao alterar arquivos | [Watcher C](https://github.com/e-dant/watcher/tree/release/watcher-c) | `nowatcher` |

## Compilando a aplicação Go

Expand All @@ -115,7 +115,7 @@ CGO_CFLAGS=$(php-config --includes) \
CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" \
xcaddy build \
--output frankenphp \
--with github.com/dunglas/frankenphp/caddy \
--with github.com/php/frankenphp/caddy \
--with github.com/dunglas/mercure/caddy \
--with github.com/dunglas/vulcain/caddy
# Adicione módulos Caddy e extensões FrankenPHP extras aqui
Expand All @@ -141,7 +141,7 @@ Alternativamente, é possível compilar o FrankenPHP sem o `xcaddy` usando o
comando `go` diretamente:

```console
curl -L https://github.com/dunglas/frankenphp/archive/refs/heads/main.tar.gz | tar xz
curl -L https://github.com/php/frankenphp/archive/refs/heads/main.tar.gz | tar xz
cd frankenphp-main/caddy/frankenphp
CGO_CFLAGS=$(php-config --includes) CGO_LDFLAGS="$(php-config --ldflags) $(php-config --libs)" go build -tags=nobadger,nomysql,nopgx
```
88 changes: 60 additions & 28 deletions docs/pt-br/config.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ FrankenPHP, Caddy, bem como os módulos Mercure e Vulcain, podem ser configurado
usando
[os formatos suportados pelo Caddy](https://caddyserver.com/docs/getting-started#your-first-config).

Nas [imagens do Docker](docker.md), o `Caddyfile` está localizado em
Nas [imagens Docker](docker.md), o `Caddyfile` está localizado em
`/etc/frankenphp/Caddyfile`.
O binário estático também procurará pelo `Caddyfile` no diretório onde o comando
`frankenphp run` é executado.
Expand All @@ -19,9 +19,9 @@ arquivos de configuração nos locais descritos acima.
## Docker

- `php.ini`: `/usr/local/etc/php/php.ini` (nenhum `php.ini` é fornecido por
padrão)
- Arquivos de configuração adicionais: `/usr/local/etc/php/conf.d/*.ini`
- Extensões PHP: `/usr/local/lib/php/extensions/no-debug-zts-<YYYYMMDD>/`
padrão);
- Arquivos de configuração adicionais: `/usr/local/etc/php/conf.d/*.ini`;
- Extensões PHP: `/usr/local/lib/php/extensions/no-debug-zts-<YYYYMMDD>/`;
- Você deve copiar um template oficial fornecido pelo projeto PHP:

```dockerfile
Expand All @@ -37,18 +37,18 @@ RUN cp $PHP_INI_DIR/php.ini-development $PHP_INI_DIR/php.ini
## Pacotes RPM e Debian

- `php.ini`: `/etc/frankenphp/php.ini` (um arquivo `php.ini` com configurações
de produção é fornecido por padrão)
- Arquivos de configuração adicionais: `/etc/frankenphp/php.d/*.ini`
- Extensões PHP: `/usr/lib/frankenphp/modules/`
de produção é fornecido por padrão);
- Arquivos de configuração adicionais: `/etc/frankenphp/php.d/*.ini`;
- Extensões PHP: `/usr/lib/frankenphp/modules/`.

## Binário estático

- `php.ini`: O diretório no qual `frankenphp run` ou `frankenphp php-server` é
executado e, em seguida, `/etc/frankenphp/php.ini`
- Arquivos de configuração adicionais: `/etc/frankenphp/php.d/*.ini`
- Extensões PHP: não podem ser carregadas, empacote-as no próprio binário
- Copie um dos `php.ini-production` ou `php.ini-development` fornecidos
[nos fontes do PHP](https://github.com/php/php-src/).
executado e, em seguida, `/etc/frankenphp/php.ini`;
- Arquivos de configuração adicionais: `/etc/frankenphp/php.d/*.ini`;
- Extensões PHP: não podem ser carregadas, empacote-as no próprio binário;
- Copie um dos arquivos `php.ini-production` ou `php.ini-development` fornecidos
[no código-fonte do PHP](https://github.com/php/php-src/).

## Configuração do Caddyfile

Expand Down Expand Up @@ -79,11 +79,12 @@ A [opção global](https://caddyserver.com/docs/caddyfile/concepts#global-option
max_wait_time <duracao> # Define o tempo máximo que uma requisição pode esperar por uma thread PHP livre antes de atingir o tempo limite. Padrão: disabled.
php_ini <chave> <valor> # Define uma diretiva php.ini. Pode ser usada várias vezes para definir múltiplas diretivas.
worker {
file <caminho> # Define o caminho para o script do worker.
file <caminho> # Define o caminho para o worker script.
num <num> # Define o número de threads PHP a serem iniciadas, o padrão é 2x o número de CPUs disponíveis.
env <chave> <valor> # Define uma variável de ambiente extra para o valor fornecido. Pode ser especificado mais de uma vez para múltiplas variáveis de ambiente.
watch <caminho> # Define o caminho para monitorar alterações no arquivo. Pode ser especificado mais de uma vez para múltiplos caminhos.
env <chave> <valor> # Define uma variável de ambiente extra para o valor fornecido. Pode ser especificada mais de uma vez para múltiplas variáveis de ambiente.
watch <caminho> # Define o caminho para monitorar alterações em arquivos. Pode ser especificada mais de uma vez para múltiplos caminhos.
name <nome> # Define o nome do worker, usado em logs e métricas. Padrão: caminho absoluto do arquivo do worker.
max_consecutive_failures <num> # Define o número máximo de falhas consecutivas antes do worker ser considerado inoperante. -1 significa que o worker sempre reiniciará. Padrão: 6.
}
}
}
Expand All @@ -109,13 +110,15 @@ servidor:

```caddyfile
app.example.com {
root /caminho/para/aplicacao/public
php_server {
root /caminho/para/aplicacao/public
root /caminho/para/aplicacao/public # permite melhor armazenamento em cache
worker index.php <num>
}
}

outra.example.com {
root /caminho/para/outra/aplicacao/public
php_server {
root /caminho/para/outra/aplicacao/public
worker index.php <num>
Expand Down Expand Up @@ -162,14 +165,15 @@ php_server [<matcher>] {
root <directory> # Define a pasta raiz para o site. Padrão: diretiva `root`.
split_path <delim...> # Define as substrings para dividir o URI em duas partes. A primeira substring correspondente será usada para separar as "informações de caminho" do caminho. A primeira parte é sufixada com a substring correspondente e será assumida como o nome real do recurso (script CGI). A segunda parte será definida como PATH_INFO para o script usar. Padrão: `.php`
resolve_root_symlink false # Desabilita a resolução do diretório `root` para seu valor real avaliando um link simbólico, se houver (habilitado por padrão).
env <chave> <valor> # Define uma variável de ambiente extra para o valor fornecido. Pode ser especificado mais de uma vez para múltiplas variáveis de ambiente.
env <chave> <valor> # Define uma variável de ambiente extra para o valor fornecido. Pode ser especificada mais de uma vez para múltiplas variáveis de ambiente.
file_server off # Desabilita a diretiva interna file_server.
worker { # Cria um worker específico para este servidor. Pode ser especificado mais de uma vez para múltiplos workers.
file <caminho> # Define o caminho para o script do worker, pode ser relativo à raiz do php_server
num <num> # Define o número de threads PHP a serem iniciadas, o padrão é 2x o número de threads disponíveis
worker { # Cria um worker específico para este servidor. Pode ser especificada mais de uma vez para múltiplos workers.
file <caminho> # Define o caminho para o worker script, pode ser relativo à raiz do php_server.
num <num> # Define o número de threads PHP a serem iniciadas, o padrão é 2x o número de threads disponíveis.
name <nome> # Define o nome do worker, usado em logs e métricas. Padrão: caminho absoluto do arquivo do worker. Sempre começa com m# quando definido em um bloco php_server.
watch <caminho> # Define o caminho para monitorar alterações no arquivo. Pode ser especificado mais de uma vez para múltiplos caminhos.
env <chave> <valor> # Define uma variável de ambiente extra para o valor fornecido. Pode ser especificado mais de uma vez para múltiplas variáveis de ambiente. As variáveis de ambiente para este worker também são herdadas do php_server pai, mas podem ser sobrescritas aqui.
watch <caminho> # Define o caminho para monitorar alterações em arquivos. Pode ser especificada mais de uma vez para múltiplos caminhos.
env <chave> <valor> # Define uma variável de ambiente extra para o valor fornecido. Pode ser especificada mais de uma vez para múltiplas variáveis de ambiente. As variáveis de ambiente para este worker também são herdadas do pai do php_server, mas podem ser sobrescritas aqui.
match <caminho> # Corresponde o worker a um padrão de caminho. Substitui try_files e só pode ser usada na diretiva php_server.
}
worker <outro_arquivo> <num> # Também pode usar a forma abreviada, como no bloco global frankenphp.
}
Expand All @@ -180,7 +184,7 @@ php_server [<matcher>] {
Como os workers inicializam sua aplicação apenas uma vez e a mantêm na memória,
quaisquer alterações nos seus arquivos PHP não serão refletidas imediatamente.

Os workers podem ser reiniciados em caso de alterações nos arquivos por meio da
Os workers podem ser reiniciados em caso de alterações em arquivos por meio da
diretiva `watch`.
Isso é útil para ambientes de desenvolvimento.

Expand Down Expand Up @@ -224,9 +228,37 @@ Você também pode especificar um ou mais diretórios por meio de um
- Tenha cuidado ao monitorar arquivos criados em tempo de execução (como logs),
pois eles podem causar reinicializações indesejadas de workers.

O monitor de arquivos é baseado em
O monitor de arquivos é baseado no
[e-dant/watcher](https://github.com/e-dant/watcher).

## Correspondendo o worker a um caminho

Em aplicações PHP tradicionais, os scripts são sempre colocados no diretório
público.
Isso também se aplica aos worker scripts, que são tratados como qualquer outro
script PHP.
Se você quiser colocar o worker script fora do diretório público, pode fazê-lo
por meio da diretiva `match`.

A diretiva `match` é uma alternativa otimizada ao `try_files`, disponível apenas
dentro do `php_server` e do `php`.
O exemplo a seguir sempre servirá um arquivo no diretório público, se presente,
e, caso contrário, encaminhará a requisição para o worker que corresponde ao
padrão de caminho.

```caddyfile
{
frankenphp {
php_server {
worker {
file /caminho/para/worker.php # arquivo pode estar fora do caminho público
match /api/* # todas as requisições que começam com /api/ serão tratadas por este worker
}
}
}
}
```

### Full Duplex (HTTP/1)

Ao usar HTTP/1.x, pode ser desejável habilitar o modo full-duplex para permitir
Expand Down Expand Up @@ -267,10 +299,10 @@ no `Caddyfile` sem modificá-lo:

- `SERVER_NAME`: altera
[os endereços nos quais escutar](https://caddyserver.com/docs/caddyfile/concepts#addresses),
os nomes de host fornecidos também serão usados para o certificado TLS gerado.
- `SERVER_ROOT`: altera o diretório raiz do site, o padrão é `public/`.
os nomes de host fornecidos também serão usados para o certificado TLS gerado;
- `SERVER_ROOT`: altera o diretório raiz do site, o padrão é `public/`;
- `CADDY_GLOBAL_OPTIONS`: injeta
[opções globais](https://caddyserver.com/docs/caddyfile/options).
[opções globais](https://caddyserver.com/docs/caddyfile/options);
- `FRANKENPHP_CONFIG`: injeta a configuração sob a diretiva `frankenphp`.

Quanto às SAPIs FPM e CLI, as variáveis de ambiente são expostas por padrão na
Expand Down Expand Up @@ -309,7 +341,7 @@ Você também pode alterar a configuração do PHP usando a diretiva `php_ini` n

## Habilitar o modo de depuração

Ao usar a imagem do Docker, defina a variável de ambiente `CADDY_GLOBAL_OPTIONS`
Ao usar a imagem Docker, defina a variável de ambiente `CADDY_GLOBAL_OPTIONS`
como `debug` para habilitar o modo de depuração:

```console
Expand Down
Loading