Optimisation PHP 8 : OpCache et JIT expliqués

Backend2026-09-24TryQuickToolBox

Votre application PHP 8 semble lente sous charge. Vous avez optimisé les requêtes, ajouté de la mise en cache, mais les temps de réponse restent élevés. Le coupable pourrait être la surcharge d'exécution de PHP lui-même. Deux fonctionnalités puissantes—OpCache et JIT—peuvent considérablement accélérer votre code, mais seulement si elles sont correctement configurées. Ce guide explique comment elles fonctionnent et comment les optimiser pour des charges de travail réelles.

Qu'est-ce qu'OpCache et pourquoi c'est important

PHP est un langage interprété : chaque requête analyse et compile normalement vos fichiers sources en bytecode avant de les exécuter. OpCache stocke ce bytecode compilé en mémoire partagée, de sorte que les requêtes suivantes sautent l'analyse et la compilation. Le résultat ? Une utilisation CPU réduite et des temps de réponse plus rapides.

OpCache est activé par défaut dans de nombreuses configurations de production, mais les paramètres par défaut sont conservateurs. L'optimiser peut entraîner des améliorations de débit de 2 à 3x pour les applications limitées par le CPU.

Directives de configuration OpCache essentielles

Paramètres OpCache recommandés pour la production

; php.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0
opcache.revalidate_freq=0
opcache.interned_strings_buffer=32
opcache.preload=/path/to/preload.php
opcache.preload_user=www-data

Après avoir modifié les paramètres, redémarrez PHP-FPM. Surveillez avec opcache_get_status() pour vérifier le taux de réussite et l'utilisation de la mémoire.

Comprendre le JIT dans PHP 8

La compilation JIT (Just-In-Time) pousse OpCache un peu plus loin : elle compile le bytecode en code machine natif à l'exécution. Cela peut considérablement accélérer les tâches gourmandes en CPU comme les calculs mathématiques, mais cela fait peu pour les requêtes web typiques dominées par les E/S (base de données, système de fichiers, réseau).

JIT fait partie d'OpCache, vous devez donc d'abord activer OpCache. Dans PHP 8, JIT est configuré via opcache.jit et opcache.jit_buffer_size.

Directives de configuration JIT

Paramètres JIT recommandés

opcache.jit=tracing
opcache.jit_buffer_size=128M

Remarque : JIT ne fonctionne qu'avec OpCache activé. En CLI, vous devrez peut-être définir opcache.enable_cli=1 pour tester JIT.

OpCache vs JIT : quand utiliser lequel

FonctionnalitéOpCacheJIT
Bénéfice principalMet en cache le bytecode compiléCompile le bytecode en code natif
Idéal pourToutes les applications PHPScripts gourmands en CPU, longue durée
Impact sur les applications I/O-boundÉlevé (réduit l'analyse/compilation)Faible à nul
Surcharge mémoireModéréeBuffer supplémentaire
ComplexitéFaibleMoyenne

Guide d'optimisation étape par étape

  1. Activez OpCache avec les paramètres recommandés ci-dessus.
  2. Surveillez OpCache en utilisant opcache_get_status() ou des outils comme OpCache GUI. Visez un taux de réussite supérieur à 99%.
  3. Ajustez la mémoire si opcache.memory_usage est proche de la limite.
  4. Envisagez le préchargement pour les grands frameworks (Laravel, Symfony). Créez un script de préchargement qui requiert les classes fréquemment utilisées.
  5. Activez JIT uniquement si votre application est limitée par le CPU. Testez avec et sans JIT pour mesurer l'impact.
  6. Benchmarkez avec des outils comme ab, wrk ou siege. Comparez les requêtes par seconde et la latence.
  7. Déployez les changements progressivement et surveillez les logs d'erreurs pour détecter les problèmes.

Pièges courants et bonnes pratiques

FAQ

Le JIT améliore-t-il les performances de toutes les applications PHP ?

Non. Le JIT bénéficie aux tâches gourmandes en CPU comme les calculs complexes ou le traitement de données. Pour les applications web I/O-bound (requêtes de base de données, appels API), les gains sont minimes. OpCache seul offre souvent la plus grande accélération.

Comment savoir si OpCache fonctionne ?

Vérifiez phpinfo() pour le statut d'OpCache, ou appelez opcache_get_status() dans un script. Recherchez opcache_enabled => true et un nombre élevé de hits par rapport aux misses.

Puis-je utiliser JIT avec PHP 7 ?

Non. JIT a été introduit dans PHP 8.0. PHP 7 ne supporte qu'OpCache. Si vous êtes sur PHP 7, concentrez-vous sur l'optimisation d'OpCache et envisagez de passer à PHP 8 pour JIT et d'autres améliorations de performances.

Prêt à analyser les performances de votre serveur ? Découvrez notre Analyseur de Logs Nginx pour tirer des informations de vos logs d'accès et identifier les goulots d'étranglement.