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
2 changes: 1 addition & 1 deletion docs/pt-br/performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ A variante Alpine Linux das imagens oficiais do Docker e os binários padrão qu
fornecemos usam [a biblioteca C musl](https://musl.libc.org).

O PHP é conhecido por ser
[mais lento](https://gitlab.alpinux.org/alpine/aports/-/issues/14381)
[mais lento](https://gitlab.alpinelinux.org/alpine/aports/-/issues/14381)
ao usar esta biblioteca C alternativa em vez da biblioteca GNU tradicional,
especialmente quando compilado no modo ZTS (thread-safe), necessário para o
FrankenPHP. A diferença pode ser significativa em um ambiente com muitas threads.
Expand Down
30 changes: 15 additions & 15 deletions docs/ru/performance.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

### `max_threads`

Хотя всегда лучше точно знать, как будет выглядеть ваш трафик, реальные приложения, как правило, более непредсказуемы. [Конфигурация](config.md#kонфигурация-caddyfile) `max_threads` позволяет FrankenPHP автоматически создавать дополнительные потоки во время выполнения до указанного предела. `max_threads` может помочь вам определить, сколько потоков требуется для обработки вашего трафика, и может сделать сервер более устойчивым к скачкам задержки. Если установлено значение `auto`, лимит будет оценен на основе `memory_limit` в вашем `php.ini`. Если это невозможно, `auto` вместо этого будет по умолчанию равно 2x `num_threads`. Имейте в виду, что `auto` может сильно недооценивать необходимое количество потоков. `max_threads` похожа на [pm.max_children](https://www.php.net/manual/en/install.fpm.configuration.php#pm.max-children) в PHP FPM. Основное отличие состоит в том, что FrankenPHP использует потоки вместо процессов и автоматически распределяет их между различными скриптами воркеров и 'классическим режимом' по мере необходимости.
Хотя всегда лучше точно знать, как будет выглядеть ваш трафик, реальные приложения, как правило, более непредсказуемы. [Конфигурация](config.md#конфигурация-caddyfile) `max_threads` позволяет FrankenPHP автоматически создавать дополнительные потоки во время выполнения до указанного предела. `max_threads` может помочь вам определить, сколько потоков требуется для обработки вашего трафика, и может сделать сервер более устойчивым к скачкам задержки. Если установлено значение `auto`, лимит будет оценен на основе `memory_limit` в вашем `php.ini`. Если это невозможно, `auto` вместо этого будет по умолчанию равно 2x `num_threads`. Имейте в виду, что `auto` может сильно недооценивать необходимое количество потоков. `max_threads` похожа на [pm.max_children](https://www.php.net/manual/en/install.fpm.configuration.php#pm.max-children) в PHP FPM. Основное отличие состоит в том, что FrankenPHP использует потоки вместо процессов и автоматически распределяет их между различными скриптами воркеров и 'классическим режимом' по мере необходимости.

## Режим воркера

Expand Down Expand Up @@ -65,40 +65,40 @@ php_server {
```caddyfile
php_server {
try_files {path} index.php
root /root/to/your/app # explicitly adding the root here allows for better caching
root /root/to/your/app # явное указание корневой директории здесь обеспечивает лучшее кеширование
}
```

Это может значительно сократить количество ненужных файловых операций. Эквивалент предыдущей конфигурации для воркера будет следующим:

```caddyfile
route {
php_server { # use "php" instead of "php_server" if you don't need the file server at all
php_server { # используйте "php" вместо "php_server", если вам вообще не нужен файловый сервер
root /root/to/your/app
worker /path/to/worker.php {
match * # send all requests directly to the worker
match * # отправить все запросы напрямую воркеру
}
}
}
```

Альтернативный подход с 0 ненужных операций файловой системы заключается в использовании директивы `php` и разделении файлов от PHP по пути. Этот подход хорошо работает, если все ваше приложение обслуживается одним входным файлом. Пример [конфигурации](config.md#kонфигурация-caddyfile), которая обслуживает статические файлы за папкой `/assets`, может выглядеть так:
Альтернативный подход с 0 ненужных операций файловой системы заключается в использовании директивы `php` и разделении файлов от PHP по пути. Этот подход хорошо работает, если все ваше приложение обслуживается одним входным файлом. Пример [конфигурации](config.md#конфигурация-caddyfile), которая обслуживает статические файлы за папкой `/assets`, может выглядеть так:

```caddyfile
route {
@assets {
path /assets/*
}

# everything behind /assets is handled by the file server
# всё, что находится за /assets, обрабатывается файловым сервером
file_server @assets {
root /root/to/your/app
}

# everything that is not in /assets is handled by your index or worker PHP file
# всё, что не находится в /assets, обрабатывается вашим индексным или воркер PHP-файлом
rewrite index.php
php {
root /root/to/your/app # explicitly adding the root here allows for better caching
root /root/to/your/app # явное указание корневой директории здесь обеспечивает лучшее кеширование
}
}
```
Expand Down Expand Up @@ -145,16 +145,16 @@ FrankenPHP использует официальный интерпретато
```caddyfile
example.com {
php_server {
root /app/public # the root of your application
root /app/public # корень вашего приложения
worker index.php {
match /slow-endpoint/* # all requests with path /slow-endpoint/* are handled by this thread pool
num 1 # minimum 1 threads for requests matching /slow-endpoint/*
max_threads 20 # allow up to 20 threads for requests matching /slow-endpoint/*, if needed
match /slow-endpoint/* # все запросы к /slow-endpoint/* обрабатываются этим пулом потоков
num 1 # минимум 1 поток для запросов к /slow-endpoint/*
max_threads 20 # при необходимости разрешить до 20 потоков для запросов к /slow-endpoint/*
}
worker index.php {
match * # all other requests are handled separately
num 1 # minimum 1 threads for other requests, even if the slow endpoints start hanging
max_threads 20 # allow up to 20 threads for other requests, if needed
match * # все остальные запросы обрабатываются отдельно
num 1 # минимум 1 поток для остальных запросов, даже если медленные конечные точки начинают зависать
max_threads 20 # при необходимости разрешить до 20 потоков для остальных запросов
}
}
}
Expand Down