Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| opcache.enable | 1 | INI_ALL |
|
| opcache.enable_cli | 0 | INI_SYSTEM |
Entre PHP 7.1.2 et 7.1.6 inclusivement, la valeur par défaut était de 1 |
| opcache.memory_consumption | "128" | INI_SYSTEM |
|
| opcache.interned_strings_buffer | "8" | INI_SYSTEM |
|
| opcache.max_accelerated_files | "10000" | INI_SYSTEM |
|
| opcache.max_wasted_percentage | "5" | INI_SYSTEM |
|
| opcache.use_cwd | 1 | INI_SYSTEM |
|
| opcache.validate_timestamps | 1 | INI_ALL |
|
| opcache.revalidate_freq | "2" | INI_ALL |
|
| opcache.revalidate_path | 0 | INI_ALL |
|
| opcache.save_comments | 1 | INI_SYSTEM |
|
| opcache.fast_shutdown | 0 | INI_SYSTEM |
Supprimé en PHP 7.2.0. |
| opcache.enable_file_override | 0 | INI_SYSTEM |
|
| opcache.optimization_level | "0x7FFEBFFF" | INI_SYSTEM |
Modifié depuis 0x7FFFBFFF en PHP 7.3.0 |
| opcache.inherited_hack | 1 | INI_SYSTEM |
Supprimé en PHP 7.3.0 |
| opcache.dups_fix | 0 | INI_ALL |
|
| opcache.blacklist_filename | "" | INI_SYSTEM |
|
| opcache.max_file_size | 0 | INI_SYSTEM |
|
| opcache.consistency_checks | 0 | INI_ALL |
>Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0. |
| opcache.force_restart_timeout | "180" | INI_SYSTEM |
|
| opcache.error_log | "" | INI_SYSTEM |
|
| opcache.log_verbosity_level | 1 | INI_SYSTEM |
|
| opcache.record_warnings | 0 | INI_SYSTEM |
Disponible à partir de PHP 8.0.0. |
| opcache.preferred_memory_model | "" | INI_SYSTEM |
|
| opcache.protect_memory | 0 | INI_SYSTEM |
|
| opcache.mmap_base | null |
INI_SYSTEM |
|
| opcache.restrict_api | "" | INI_SYSTEM |
|
| opcache.file_update_protection | "2" | INI_ALL |
|
| opcache.huge_code_pages | 0 | INI_SYSTEM |
|
| opcache.lockfile_path | "/tmp" | INI_SYSTEM |
|
| opcache.opt_debug_level | 0 | INI_SYSTEM |
Disponible à partir de PHP 7.1.0 |
| opcache.file_cache | NULL | INI_SYSTEM |
|
| opcache.file_cache_only | 0 | INI_SYSTEM |
|
| opcache.file_cache_consistency_checks | 1 | INI_SYSTEM |
|
| opcache.file_cache_fallback | 1 | INI_SYSTEM |
Windows uniquement. |
| opcache.validate_permission | 0 | INI_SYSTEM |
Disponible à partir de PHP 7.0.14 |
| opcache.validate_root | 0 | INI_SYSTEM |
Disponible à partir de PHP 7.0.14 |
| opcache.preload | "" | INI_SYSTEM |
Disponible à partir de PHP 7.4.0 |
| opcache.preload_user | "" | INI_SYSTEM |
Disponible à partir de PHP 7.4.0 |
| opcache.cache_id | "" | INI_SYSTEM |
Windows uniquement. Disponible à partir de PHP 7.4.0 |
| opcache.jit | "disable" | INI_ALL |
Disponible à partir de PHP 8.0.0. Auparavant à PHP 8.4.0, la valeur par défaut était "tracing" |
| opcache.jit_buffer_size | 0 | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_debug | 0 | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_bisect_limit | 0 | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_prof_threshold | "0.005" | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_max_root_traces | "1024" | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_max_side_traces | "128" | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_max_exit_counters | "8192" | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_hot_loop | "64" | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_hot_func | "127" | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_hot_return | "8" | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_hot_side_exit | "8" | INI_SYSTEM |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_blacklist_root_trace | "16" | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_blacklist_side_trace | "8" | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_max_loop_unrolls | "8" | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_max_recursive_calls | "2" | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_max_recursive_returns | "2" | INI_ALL |
Disponible à partir de PHP 8.0.0 |
| opcache.jit_max_polymorphic_calls | "2" | INI_ALL |
Disponible à partir de PHP 8.0.0 |
Voici un éclaircissement sur l'utilisation des directives de configuration.
opcache.enable
bool
opcache.enable
ne peut être activé pendant l'exécution via la fonction
ini_set(), il ne peut être que désactivé. Tenter de l'activer
dans un script va générer une alerte.
opcache.enable_cli
bool
opcache.memory_consumption
int
"8",
qui est forcé si une valeur plus petite est définie.
opcache.interned_strings_buffer
int
Note: Avant PHP 8.4.0, la valeur maximale était de 4095 mégaoctets sur toutes les architectures.
opcache.max_accelerated_files
int
{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
qui est plus grand ou égal que la valeur configurée. La valeur minimale est 200.
La valeur maximale est 100000 dans PHP < 5.5.6, et 1000000 dans les versions
ultérieur.
Les valeurs hors de cette intervalle sont fixées à l'intervalle autorisé.
opcache.max_wasted_percentage
int
"50",
qui est forcé si une valeur plus large est définie.
opcache.use_cwd
bool
opcache.validate_timestamps
bool
Si activé, OPcache va vérifier les mises à jour des scripts toutes les opcache.revalidate_freq secondes. Lorsque cette directive est désactivée, vous devez réinitialiser OPcache manuellement via la fonction opcache_reset(), la fonction opcache_invalidate() ou en redémarrant le serveur Web pour que les modifications du système de fichiers ne prennent effet.
Note: OPcache peut toujours valider l'horodatage d'un fichier lors de la compilation si les options opcache.file_update_protection ou opcache.max_file_size sont définies sur des valeurs non nulles.
opcache.revalidate_freq
int
0
fera qu'OPcache vérifiera les mises à jour à chaque requête.
Cette directive de configuration est ignorée si
opcache.validate_timestamps
est désactivé.
opcache.revalidate_path
bool
opcache.save_comments
bool
opcache.fast_shutdown
bool
opcache.enable_file_override
bool
opcache.optimization_level
int
0x7FFEBFFF, qui active toutes les
optimisations sûres. Désactiver des optimisations ou activer des optimisations
non sûres est surtout utile pour déboguer/développer l'optimiseur.
Chaque bit dans le masque de bits active une passe d'optimisation spécifique :
| Bit | Nom de la passe | Description | Défaut |
|---|---|---|---|
| 0 | PASS_1 | Optimisations peephole simples | Activé |
| 1 | PASS_2 | Inutilisé (a été fusionné dans PASS_1) | Activé |
| 2 | PASS_3 | Optimisation de saut simple | Activé |
| 3 | PASS_4 | Optimisation des appels | Activé |
| 4 | PASS_5 | Optimisation basée sur le graphe de flux de contrôle | Activé |
| 5 | PASS_6 | Optimisation basée sur l'analyse de flux de données | Activé |
| 6 | PASS_7 | Indique si le graphe d'appels doit être utilisé pour les optimisations SSA | Activé |
| 7 | PASS_8 | Propagation conditionnelle de constantes creuses | Activé |
| 8 | PASS_9 | Optimisation des variables temporaires | Activé |
| 9 | PASS_10 | Suppression des opcodes NOP | Activé |
| 10 | PASS_11 | Compactage des littéraux | Activé |
| 11 | PASS_12 | Pré-calcul de la taille de la pile d'appels | Activé |
| 12 | PASS_13 | Suppression des variables inutilisées | Activé |
| 13 | PASS_14 | Élimination du code mort | Activé |
| 14 | PASS_15 | Collecte et substitution des déclarations de constantes (non sûr) | Désactivé |
| 15 | PASS_16 | Inlining de fonctions triviales (partie de l'optimisation des appels) | Activé |
| 16 | (Drapeau) | Ignorer la possibilité de surcharge d'opérateur (non sûr) | Désactivé |
Note: Optimisations sûres vs non sûres
Les optimisations sûres (activées par défaut) préservent le comportement exact du code PHP tout en améliorant les performances. Elles incluent l'élimination du code mort, le repliement de constantes et l'optimisation des sauts. Les optimisations non sûres (désactivées par défaut) peuvent altérer le comportement dans des cas particuliers :
- Bit 14 : Collecte des constantes. Les constantes sont substituées à la compilation, ignorant l'ordre de déclaration à l'exécution :
<?php
echo getA(); // Affiche : "hello" au lieu de lancer une Error
const A = "hello";
function getA() { return A; }- Bit 16 : Ignorer la surcharge d'opérateur. Non sûr lors de l'utilisation de classes avec
do_operation(par exemple GMP, BCMath) dans des opérations arithmétiques. Avec des déclarations de type, l'optimiseur peut appliquer les mêmes optimisations en toute sécurité.
opcache.inherited_hack
bool
opcache.dups_fix
bool
opcache.blacklist_filename
string
; Correspond à un fichier spécifique. /var/www/broken.php ; Un préfixe qui correspond à tous les fichiers qui commencent par x. /var/www/x ; Une correspondance avec un joker. /var/www/*-broken.php
opcache.max_file_size
int
0, tous les fichiers pourront être mise en cache.
opcache.consistency_checks
int
Note: Désactivé à partir de PHP 8.1.18 et 8.2.5. Supprimé à partir de PHP 8.3.0.
opcache.force_restart_timeout
int
opcache.error_log
string
stderr, et les erreurs seront envoyées vers la sortie
d'erreurs standard (qui sera le log des erreurs du serveur Web dans la
plupart des cas).
opcache.log_verbosity_level
int
opcache.record_warnings
bool
opcache.preferred_memory_model
string
mmap, shm,
posix et win32.
opcache.protect_memory
bool
opcache.mmap_base
string
opcache.restrict_api
string
opcache.file_update_protection
string
0.
Cela permettra de mettre en cache les fichiers immédiatement.
opcache.huge_code_pages
bool
opcache.lockfile_path
string
opcache.opt_debug_level
string
opcache.file_cache
string
opcache.file_cache_only
bool
Note: Antérieur à PHP 8.1.0, désactiver cette directive avec un fichier de cache déjà remplis nécessite le vidage manuel du cache.
opcache.file_cache_consistency_checks
bool
opcache.file_cache_fallback
bool
Désactiver cette option de configuration peut empêcher les processus de démarrer, Disabling this configuration option may prevent processes to start, et est donc découragé.
opcache.validate_permission
bool
opcache.validate_root
bool
opcache.preload
string
Note: Le préchargement n'est pas supporté sur Windows.
opcache.preload_user
string
root.
À partir de PHP 8.3.0, cette directive n'a plus besoin d'être définie afin d'autoriser le préchargement
lors de l'exécution en tant que root avec CLI SAPI ou phpdbg SAPI.
opcache.cache_id
string
Sur Windows, tous les processus exécutant le même PHP SAPI sous le même compte utilisateur ayant le même ID de cache partage une instance unique de OPcache. La valeur de l'ID de cache peut être choisi librement.
Pour IIS, des pools d'applications différentes peuvent avoir leur propre
instance OPcache en utilisant la variable d'environnement
APP_POOL_ID comme opcache.cache_id.
For IIS, different application pools can have their own OPcache instance
by using the environment variable APP_POOL_ID as
opcache.cache_id.
opcache.jit
string|int
disable: Désactivé complètement, ne peut pas
être activé lors du runtime.off: Désactivé, mais peut être activé lors du runtime.tracing/on: Utilise le tracing JIT.
Activé par défaut et recommandé pour la plupart des utilisateurs.
function: Utilise le function JIT.
Pour un usage avancé, cette option accepte un entier à 4 chiffre
CRTO, où les chiffres signifient :
C (Drapeaux d'optimisation spécifique au CPU)0: Désactive les optimisations spécifique de CPU.1: Active l'usage d'AVX, si le CPU le supporte.R (allocation de registre)0: N'accomplie aucune allocation de registre1: Accomplie des allocations de registre au niveau d'un block.2: Accomplie des allocations de registre globale.T (trigger/déclencheur)0: Compile toutes les fonctions lors du chargement du script.1: Compile les fonctions lors de leur première exécution.2: Profile les fonctions lors de la première requête et compile les fonctions
les plus chaudes juste après.
3: Profile à la volée et compile les fonctions chaudes.4: Actuellement inutilisé.5: Utilise le tracing JIT. Profile à la volée et
compile les traces pour les segments de code chaud.
O (niveau d'optimisation)0: Pas de JIT.1: JIT minimal (appelle les handlers standard de la VM).2: Inline les handlers de la VM.3: Utilise l'inférence de type.4: Utilise un graphe d'appel.5: Optimise le script entier."tracing" corresponds à CRTO = 1254,
le mode "function" corresponds à CRTO = 1205.
opcache.jit_buffer_size
int
opcache.jit_debug
int
ZEND_JIT_DEBUG).
opcache.jit_bisect_limit
int
opcache.jit=1215.
Voir plus dans l'option opcache.jit.
opcache.jit_prof_threshold
float
opcache.jit_max_root_traces
int
opcache.jit_max_side_traces
int
opcache.jit_max_exit_counters
int
opcache.jit_hot_loop
int
[0,255] ;
pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les boucles.
opcache.jit_hot_func
int
[0,255] ;
pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les fonctions.
opcache.jit_hot_return
int
[0,255] ;
pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes retournes.
opcache.jit_hot_side_exit
int
[0,255] ;
pour tout paramètre hors de cette plage, par exemple -1 ou 256, la valeur par défaut sera utilisée à la place.
Spécialement, une valeur nulle désactivera le JIT pour tracer et compiler toutes les sorties latérales.
opcache.jit_blacklist_root_trace
int
opcache.jit_blacklist_side_trace
int
opcache.jit_max_loop_unrolls
int
opcache.jit_max_recursive_calls
int
opcache.jit_max_recursive_returns
int
opcache.jit_max_polymorphic_calls
int