Qbix Server: Servidor web PHP que afirma 10× mayor concurrencia que Nginx + PHP-FPM
Un servidor web PHP independiente que sirve archivos estáticos, scripts PHP y conexiones WebSocket en un único proceso.
Utiliza fork-tras-precarga mediante copy-on-write para afirmar ~1.600 solicitudes PHP concurrentes en 8GB de RAM frente a ~160 con php-fpm – eliminando gastos de arranque por worker y duplicación de memoria. Logra 55–73% del rendimiento estático de Nginx.
Qbix Server es un servidor web en puro PHP que elimina la pila tradicional Nginx + php-fpm. En lugar de generar workers PHP separados que carguen el framework completo independientemente, el servidor carga una sola vez al iniciarse todas las clases, configuraciones y conexiones a bases de datos, luego fork procesos worker. Los workers fork heredan el estado precargado mediante compartición de memoria copy-on-write, evitando duplicación.
La afirmación de concurrencia se basa en eficiencia de memoria. El php-fpm convencional asigna 30–60MB por worker para código framework idéntico en todos los workers. En un servidor de 8GB, esto limita a aproximadamente 160 workers simultáneos. Qbix Server carga ese código una sola vez (~30MB compartido), luego cada worker suma solo ~5MB de datos por solicitud, permitiendo ~1.600 workers en el mismo hardware.
Los benchmarks de rendimiento en un contenedor de un solo núcleo (PHP 8.3, archivo estático de 13KB) muestran que Qbix Server entrega 56–73% del rendimiento de Nginx dependiendo del modo de concurrencia y configuración keep-alive. La documentación reconoce que esta brecha es inherente: Nginx utiliza I/O sendfile() en kernel-space, notificación de eventos epoll, y C compilado, mientras que Qbix se ejecuta en PHP interpretado con stream_select y procesamiento de archivos en userspace.
Las características clave incluyen almacenamiento en caché de respuestas en memoria con validación ETag y 304, X-Accel-Redirect para control de acceso a archivos (PHP verifica permisos, servidor transmite el archivo sin URL pública), y X-Cache-Tree para invalidación de caché a nivel de componentes (invalidar un componente de página sin vaciar la página completa). El soporte WebSocket está integrado.
La arquitectura utiliza fork-por-solicitud (o pools de workers pre-forked con --workers=N). Cada solicitud se ejecuta en su propio proceso, eliminando fugas de estado – variables globales, propiedades estáticas y conexiones de base de datos se borran al finalizar el proceso. Esto contrasta con sistemas de workers persistentes como FrankenPHP y Swoole, donde el estado estático puede fugarse entre solicitudes no relacionadas sin auditoría cuidadosa.
El servidor se distribuye como código fuente PHP, archivo PHAR de 196KB, o binario estático (~15MB) que incluye PHP 8.3 y extensiones. Requiere PHP 8.1+ con extensiones sockets, pcntl (para señales y workers en Unix), y openssl. El soporte en Windows existe sin pcntl; cada solicitud spawn mediante proc_open con ~50ms de sobrecarga, sacrificando la ventaja de velocidad de precarga.
Opcionalmente, instalar amphp vía Composer actualiza la capa de transporte a HTTP/2 con multiplexing, compresión de encabezados HPACK, y server push. El transporte integrado utiliza stream_select sin dependencias.
El servidor incluye una capa micro-framework: classes/ (auto-cargadas), handlers/ (disparadas por evento bajo demanda), views/ (plantillas PHP), config/ (configuraciones JSON), web/ (raíz de documento público). La misma estructura de directorios se utiliza en la plataforma Qbix completa, permitiendo que proyectos se actualicen más tarde sin reorganización.
Para sitios simples, APIs, o proyectos que no requieran un framework completo, Qbix Server se ejecuta en modo independiente (sin bandera --app). Con --app=/ruta/a/qbix-app, integra la plataforma Qbix completa, enrutando solicitudes a través del despachador del framework y cargando plugins como Users, Streams, y Assets.
El servidor es parte del ecosistema Qbix Platform y se publica bajo licencia MIT.
Tribuna de lectores
Aún no hay aportaciones — abre el debate.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
Esperando tu clic …
·