vendredi 25 septembre 2026

À propos

Contact

Performance

FrankenPHP en mode worker pour WordPress : le test en conditions réelles

Garder l'application WordPress chargée en mémoire entre les requêtes plutôt que de la redémarrer à chaque fois : le pari du mode worker de FrankenPHP, testé face à PHP-FPM classique.

Par Clément Hadrot • 31 mars 2026 • 4 min de lecture • Aucun commentaire
FrankenPHP en mode worker pour WordPress : le test en conditions réelles

FrankenPHP est un serveur d’application PHP moderne, construit sur le serveur web Caddy, qui propose un mode dit « worker » : au lieu de démarrer un nouveau processus PHP à chaque requête comme le fait PHP-FPM classique, un script d’amorçage reste chargé en mémoire et traite plusieurs requêtes successives, à la manière d’un serveur Node.js ou d’une application Java de longue durée. L’argument de performance est net : éliminer le coût de démarrage (bootstrap) de WordPress à chaque requête, potentiellement le poste le plus coûteux sur une page simple.

Comparatif face à PHP-FPM

CritèrePHP-FPM classiqueFrankenPHP mode worker
Cycle de requêtenouveau bootstrap WordPress à chaque requêteapplication chargée une fois, réutilisée entre requêtes
Maturitééprouvé depuis plus de quinze ansrécent, en évolution rapide
Compatibilité extensionsquasi universelleà vérifier au cas par cas, état partagé possible
Complexité de déploiementbien connue, largement documentéeplus simple sur le papier, moins de retours d’expérience

Protocole du benchmark

L'essentiel à retenir : Le mode worker élimine le coût de bootstrap de WordPress à chaque requête ; Certaines extensions gardent un état en mémoire entre les requêtes, avec des effets de bord réels ; La compatibilité des extensions reste plus incertaine qu'avec PHP-FPM, éprouvé depuis quinze ans

Le test a porté sur un site vitrine avec blog, thème classique léger, sans WooCommerce ni extension complexe, pour isoler l’effet du serveur d’application plutôt que la charge propre à un site e-commerce. Chaque configuration a reçu 500 requêtes séquentielles sur trois types de page (accueil, article, page de contact avec formulaire), cache de page désactivé pour mesurer le temps de traitement PHP réel.

PagePHP-FPMFrankenPHP workerGain
Accueil187 ms124 ms34 %
Article172 ms115 ms33 %
Contact (formulaire)198 ms141 ms29 %

Le gain observé, autour de 30 à 34 % selon la page, correspond globalement au temps de bootstrap de WordPress mesuré isolément sur cette configuration (environ 55 ms), ce qui confirme que le mode worker élimine bien l’essentiel de ce coût fixe répété à chaque requête en mode classique.

Le piège de l’état partagé

Le principal point de vigilance découvert pendant le test concerne les variables globales et les singletons qui, en PHP-FPM classique, sont naturellement réinitialisés à chaque nouvelle requête puisque le processus repart de zéro. En mode worker, l’application reste chargée en mémoire, donc toute variable globale non explicitement réinitialisée entre deux requêtes peut fuiter d’un visiteur à l’autre.

Sur le site de test, une extension de formulaire de contact stockait temporairement les données soumises dans une variable statique de classe, sans jamais la vider après traitement, provoquant dans de rares cas l’affichage des données du formulaire d’un visiteur précédent à un autre visiteur arrivé peu après sur la même page. Ce bug n’existe simplement pas sous PHP-FPM classique, chaque requête démarrant sur un état complètement vierge.

Avant tout déploiement en mode worker, nous auditons désormais systématiquement le code des extensions actives à la recherche de variables statiques ou globales non réinitialisées. C’est le principal risque de compatibilité, invisible en test rapide mais bien réel en charge.

Extensions et compatibilité

  • Les extensions qui suivent les bonnes pratiques de WordPress, sans état persistant en dehors du cache d’objets officiel, fonctionnent généralement sans adaptation.
  • Les extensions plus anciennes ou moins rigoureuses, utilisant des variables globales à la légère, demandent un audit avant migration.
  • WooCommerce a montré, au moment du test, un fonctionnement globalement correct sur des scénarios simples, mais un audit approfondi reste recommandé avant un déploiement en production sur une boutique à fort trafic.

Notre verdict

FrankenPHP en mode worker tient sa promesse de performance sur le cas testé, avec un gain proche du tiers du temps de réponse, cohérent avec l’élimination du bootstrap répété de WordPress. La compatibilité reste cependant le point qui appelle le plus de prudence : contrairement à PHP-FPM, éprouvé depuis quinze ans sur des millions de sites, le mode worker expose des classes de bugs nouvelles liées à l’état partagé, qui demandent un audit de code sérieux avant tout déploiement en production sur un site avec des extensions non maîtrisées.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi