¿Qué es Rapira?
Rapira es un servidor de aplicaciones PHP escrito en Rust.
Los responsables de RoadRunner diseñan e implementan Rapira. Rapira llama a PHP directamente en el proceso del servidor.
Rapira admite HTTP y gRPC. Cada protocolo tiene su propia escucha y pool de workers PHP.
El blog contiene las novedades del proyecto.
HTTP
Rapira incluye un servidor HTTP que usa la biblioteca hyper. Acepta conexiones HTTP/1.1 y HTTP/1.0 sin cifrar. Rapira no termina TLS. Un proxy de terminación TLS acepta HTTPS del cliente, descifra la conexión y envía HTTP sin cifrar a Rapira. Consulta En producción para configurar el proxy.
Rapira admite tres modos de ejecución de PHP:
- Classic: Rapira inicializa la aplicación para cada petición, como hace php-fpm.
- Worker: Rapira inicializa la aplicación una vez. Un bucle procesa las peticiones y Rapira vuelve a llenar las superglobales de PHP para cada petición.
- Dispatcher: Rapira inicializa la aplicación una vez. El script recibe objetos de petición mediante una llamada a la API. Cada worker procesa una petición a la vez.
Consulta Modos de ejecución para conocer el comportamiento y los criterios de selección de cada modo.
gRPC
Rapira atiende llamadas unarias gRPC, gRPC-Web y Connect en una sola escucha. La aplicación PHP recibe y devuelve mensajes protobuf binarios mediante un dispatcher. El maestro carga los esquemas de servicio desde un descriptor set antes de iniciar los workers.
El pool gRPC usa el modo Dispatcher. HTTP y gRPC pueden ejecutarse juntos con scripts de entrada separados. Consulta gRPC para ver un servicio completo, la generación de clases protobuf y comandos de cliente.
Métricas y comprobaciones de estado
Una tabla [observability] opcional inicia un proceso más que no ejecuta PHP. La subtabla [observability.metrics] activa las métricas de Prometheus en /metrics. La subtabla [observability.probes] activa las sondas /livez y /readyz. Consulta Métricas y comprobaciones de estado para ver la configuración y los endpoints.