Skip to content

Что такое Rapira? ​

Rapira - сервер приложений PHP, написанный на Rust.

Разработчики RoadRunner проектируют и разрабатывают Rapira. Rapira вызывает PHP напрямую в процессе сервера.

Rapira поддерживает HTTP и gRPC. Каждый протокол имеет собственный слушатель и пул PHP-воркеров.

В блоге публикуются новости проекта.

HTTP ​

Rapira включает HTTP-сервер на основе библиотеки hyper. Он принимает открытые соединения HTTP/1.1 и HTTP/1.0. Rapira не завершает TLS. Прокси завершения TLS принимает HTTPS от клиента, расшифровывает соединение и передаёт Rapira открытый HTTP. Настройка прокси описана в разделе Запуск в продакшене.

Rapira поддерживает три режима выполнения PHP:

  • Classic: Rapira инициализирует приложение для каждого запроса, как это делает php-fpm.
  • Worker: Rapira инициализирует приложение один раз. Цикл обрабатывает запросы, а Rapira заново заполняет суперглобальные переменные PHP для каждого запроса.
  • Dispatcher: Rapira инициализирует приложение один раз. Скрипт получает объекты запросов через вызов API. Каждый воркер обрабатывает один запрос за раз.

На странице Режимы выполнения описано поведение режимов и критерии выбора.

gRPC ​

Rapira обслуживает унарные вызовы gRPC, gRPC-Web и Connect на одном слушателе. PHP-приложение получает и возвращает бинарные сообщения protobuf через диспетчер. Мастер загружает схемы сервисов из набора дескрипторов до запуска воркеров.

Пул gRPC использует режим Dispatcher. HTTP и gRPC могут работать вместе с отдельными входными скриптами. Полный пример сервиса, генерация классов protobuf и клиентские команды приведены в разделе gRPC.

Метрики и проверки работоспособности ​

Необязательная таблица [observability] запускает ещё один процесс, который не выполняет PHP. Подтаблица [observability.metrics] включает метрики Prometheus по адресу /metrics. Подтаблица [observability.probes] включает пробы /livez и /readyz. Настройка и эндпоинты описаны в разделе Метрики и проверки работоспособности.