Qbix Server ist ein reiner PHP-Webserver, der den traditionellen Stack aus Nginx + php-fpm überflüssig macht. Anstatt separate PHP-Worker zu spawnen, die das gesamte Framework unabhängig laden, wird der Server einmalig beim Start mit allen Klassen, Konfigurationen und Datenbankverbindungen geladen und forkt dann Worker-Prozesse. Geforkte Worker erben den vorgeladenen Zustand mittels Copy-on-Write-Speicherfreigabe, was Duplikation vermeidet.

Die Concurrency-Aussage basiert auf Speichereffizienz. Klassisches php-fpm alloziert 30–60MB pro Worker für Framework-Code, der auf allen Workern identisch ist. Bei 8GB RAM sind damit etwa 160 gleichzeitige Worker das Limit. Qbix Server lädt diesen Code einmal (~30MB shared), dann alloziert jeder Worker nur ~5MB für Request-spezifische Daten und ermöglicht damit ~1.600 Worker bei gleicher Hardware.

Performance-Benchmarks auf einem Single-Core-Container (PHP 8.3, 13KB statische Datei) zeigen, dass Qbix Server je nach Concurrency-Modus und Keep-Alive-Einstellung 56–73% des Nginx-Durchsatzes erreicht. Die Dokumentation räumt ein, dass diese Lücke systemisch ist: Nginx nutzt sendfile()-I/O im Kernel-Space, epoll-Eventbenachrichtigungen und kompiliertes C, während Qbix in interpretiertem PHP läuft mit stream_select und userspace-Dateiverarbeitung.

Zu den Kernfunktionen gehören In-Memory-Response-Caching mit ETag und 304-Validierung, X-Accel-Redirect für Zugriffskontrolle auf Dateien (PHP prüft Berechtigungen, Server streamt ohne öffentliche URL), und X-Cache-Tree für Cache-Invalidation auf Komponenten-Ebene (eine Seitenkomponente invalidieren, ohne die ganze Seite zu leeren). WebSocket-Unterstützung ist eingebaut.

Die Architektur nutzt Fork-pro-Request (oder vorgeforkter Worker-Pools mit --workers=N). Jeder Request läuft in einem eigenen Prozess, was State-Leaks ausschließt – globale Variablen, statische Properties und Datenbankverbindungen werden beim Prozessende gelöscht. Dies unterscheidet sich von persistenten Worker-Systemen wie FrankenPHP und Swoole, wo statischer State zwischen unverwandten Requests leaken kann, wenn nicht sorgfältig auditiert.

Der Server wird als PHP-Quellcode, 196KB PHAR-Datei oder statisches Binary (~15MB) mit PHP 8.3 und Extensions verteilt. Er benötigt PHP 8.1+ mit sockets, pcntl (für Signale und Worker auf Unix) und openssl Extensions. Windows-Unterstützung existiert ohne pcntl; jeder Request spawnt via proc_open mit ~50ms Overhead, was die Preload-Geschwindigkeit opfert.

Optional kann amphp über Composer installiert werden, um die Transport-Schicht auf HTTP/2 mit Multiplexing, HPACK-Header-Kompression und Server-Push zu upgraden. Der eingebaute Transport nutzt stream_select ohne Abhängigkeiten.

Der Server enthält eine Mikro-Framework-Schicht: classes/ (autoload), handlers/ (event-getrieben), views/ (PHP-Templates), config/ (JSON-Einstellungen), web/ (öffentliches Document Root). Die gleiche Verzeichnisstruktur nutzt das vollständige Qbix Platform, was später ein Upgrade ohne Umorganisation ermöglicht.

Für einfache Seiten, APIs oder Projekte ohne vollständiges Framework läuft Qbix Server im Standalone-Modus (ohne --app-Flag). Mit --app=/path/to/qbix-app integriert es das vollständige Qbix Platform, routet Requests durch den Framework-Dispatcher und lädt Plugins wie Users, Streams und Assets.

Der Server ist Teil des Qbix Platform Ökosystems und unter MIT-Lizenz freigegeben.