FONCTIONNALITÉS

Tout ce que faisait la stack, un seul binaire le fait

Modèle d'exécution, distribution HTTP, état partagé, observabilité et sécurité — intégrés, activés par défaut ou à une variable d'environnement près. Aucune config nginx, aucun sidecar, aucun plugin à compiler.

Run PHP

Modèle d'exécution

Des workers persistants, des Fibers coopératifs et de vrais threads d'arrière-plan — le cycle de vie de la requête, c'est à vous de le façonner.

Mode worker

01

Des processus PHP persistants s'amorcent une fois et traitent des milliers de requêtes. Superglobales, tampons et en-têtes sont réinitialisés en douceur entre les requêtes ; les autoloaders, conteneurs et connexions à la base de données persistent.

Multiplexage de Fibers

02

Chaque worker gère des centaines de requêtes concurrentes grâce aux Fibers de PHP 8.4 — les mises en veille et les attentes suspendent la Fiber au lieu de bloquer le thread.

Promesses asynchrones

03

Envoyez des closures vers un pool de threads dédié et attendez les résultats — avec les combinateurs all, race et any pour un fan-out parallèle.

Réponse anticipée

04

Envoyez la réponse au client immédiatement, puis continuez le traitement en arrière-plan — mettez des tâches en file, écrivez des logs, préchauffez les caches.

Décorateurs

05

Interceptez les appels de fonctions et de méthodes avec les attributs de PHP 8 — réessai, mise en cache, traçage ou garde sans toucher aux sites d'appel.

Streaming SSE

06

Des Server-Sent Events en temps réel directement depuis PHP avec un contrôle explicite du flush — pas de surprises de mise en tampon côté proxy.

Serve

HTTP et distribution

La couche serveur web que nginx détenait autrefois — routage, fichiers statiques, TLS, compression et protection — configurée avec des variables d'environnement.

Trois modes de routage

07

Mappage de fichiers traditionnel, front-controller de framework ou fallback SPA — une seule variable bascule ; le mode worker se superpose à n'importe lequel d'entre eux.

Fichiers statiques

08

Cache de contenu en mémoire, détection automatique du type MIME, en-têtes ETag et Last-Modified, streaming pour les gros fichiers.

Compression Brotli

09

Réponses textuelles compressées d'emblée — qualité réglable de 0 à 11, octets économisés exposés comme métrique.

TLS intégré

10

Terminaison TLS avec deux variables — certificat et clé PEM, version minimale du protocole imposée au démarrage.

Limitation de débit

11

Des limites par IP avec des fenêtres configurables. Les requêtes hors limite reçoivent un 429 ; une file PHP pleine répond par une contre-pression 529.

Délais d'expiration

12

Délai d'expiration de lecture des en-têtes contre Slowloris, délais d'expiration des requêtes, et une fenêtre de drainage gracieux à l'arrêt.

Pages d'erreur personnalisées

13

Votre propre HTML par code de statut — déposez 404.html ou 503.html dans un répertoire et pointez-y une seule variable.

Arrêt gracieux

14

SIGTERM draine les connexions en cours avant de quitter — des déploiements progressifs sans requêtes perdues.

Coordinate

État partagé

Des primitives concurrentes à l'échelle du processus pour que les workers se coordonnent sans Redis ni APCu — les opérations intra-processus coûtent des microsecondes, pas des allers-retours réseau.

Counter

15

Accumulateur int64 atomique — get, set, add, compareAndSet.

Atomic

16

Int64 avec contrôle explicite de l'ordonnancement mémoire.

Flag

17

Booléen atomique pour des transitions à usage unique.

Once

18

Conteneur à exécution unique avec fabrique protégée contre la réentrance.

Mutex

19

Mutex à empoisonnement sur une valeur stockée, avec détection d'interblocage.

Channel

20

File MPMC bornée, compatible Fiber, entre les workers.

Map

21

Magasin concurrent à clés de type chaîne avec accès par lots.

Pool

22

Pool d'objets borné avec affinité par thread.

Observe

Observabilité

Métriques, logs, traces et profils sont intégrés au serveur — pas d'exporteurs, pas de sidecars, pas de modifications de code.

Métriques Prometheus

23

Un port interne dédié expose les métriques des requêtes, des workers, des files, du cache et de l'asynchrone — prêtes pour Grafana.

Journalisation structurée

24

Des logs d'accès JSON avec la méthode, le chemin, le statut, la durée et l'ID de requête sur chaque ligne — Loki et Elasticsearch les analysent tels quels.

ID de requête

25

X-Request-ID généré ou transmis automatiquement, disponible en PHP et apposé sur chaque ligne de log.

Traçage et APM

26

W3C Trace Context, export OpenTelemetry, auto-instrumentation de PDO, cURL et Redis, plus un SDK de traçage PHP.

Profileur intégré

27

Des profils par requête aux formats xhprof, speedscope, pprof et FlameGraph — déclenchés par en-tête, cookie ou échantillonnage.

Contrôles de santé

28

Des endpoints de liveness et de readiness ainsi qu'un instantané de la configuration en direct — les sondes Kubernetes fonctionnent d'emblée.

Protect

Sécurité

Des protections sensées activées par défaut, et des listes de refus pour les points sensibles des anciennes applications PHP.

Blocage des chemins cachés

29

Les fichiers et répertoires cachés — .env, .git/, .htaccess — ne sont jamais servis. Activé par défaut, sans configuration.

Proxys de confiance

30

La véritable IP du client issue des en-têtes Forwarded (RFC 7239) et X-Forwarded-*, avec une confiance basée sur CIDR et une résolution par le nœud non fiable le plus à droite.

Liste de refus d'exécution PHP

31

Bloquez l'exécution de .php sur les chemins accessibles en écriture comme /uploads/** — les attaques par shell téléversé sur les anciennes applications meurent avant toute E/S disque.

Chemins autorisés pour les liens symboliques

32

Les évasions par lien symbolique hors de la racine du document sont bloquées sauf autorisation explicite — Laravel storage:link fonctionne toujours.

Deux lignes dans un Dockerfile

Copiez votre application dans l'image et lancez-la.