Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.
Bien que les réglages par défaut d'APCu fonctionnent correctement sur de nombreuses installations, il est utile de penser à ajuster ces paramètres de configuration.
Une question importante pour la configuration d'APCu est
quelle est la taille adéquate qui doit être allouée dans la mémoire à APCu.
La directive ini qui contrôle ce paramètre est apc.shm_size.
Le paragraphe ci-dessous est important pour répondre à cette question.
Une fois le serveur lancé, le script apc.php, disponible avec
l'extension, peut être copié dans le document root et exécuté par le
navigateur. Ce script fournit une analyse détaillée du fonctionnement interne
de APCu. Si la bibliothèque GD est activée dans PHP alors le script peut afficher
des graphiques pertinents.
Si APCu fonctionne, le nombre de Cache full count (à gauche)
affichera le nombre de fois où le cache a atteint sa capacité maximale et a dû
évacuer des entrées pour libérer de la mémoire. Pendant l'évacuation, si
apc.ttl a été spécifié, APCu essaiera d'abord de supprimer les
entrées expirées, c'est-à-dire les entrées dont le TTL a expiré ou les entrées
qui n'ont pas de TTL défini et qui n'ont pas été consultées au cours des dernières
apc.ttl secondes. Si apc.ttl n'a pas été
défini ou si la suppression des entrées expirées n'a pas libéré suffisamment
d'espace, APCu effacera l'intégralité du cache.
Le nombre d'évictions devrait être minimal dans un cache bien configuré. Si le cache est constamment rempli et donc libéré de force, le brassage résultant aura des effets préjudiciables sur les performances du script. Le moyen le plus simple de réduire ce nombre est d'allouer plus de mémoire à APCu.
Lorsque APCu est compilé avec mmap (Memory Mapping), il n'utilisera qu'un seul
segment de mémoire, contrairement au cas où APCu est construit avec
SHM (SysV Shared Memory) qui utilise plusieurs segments de mémoire. MMAP n'a
pas de limite maximale comme SHM dans /proc/sys/kernel/shmmax.
En général, l'utilisation de MMAP est recommandée car il réclame la mémoire
plus vite lorsque le serveur web est redémarré et réduit l'impact sur
l'allocation de mémoire au démarrage.
| Nom | Défaut | Modifiable | Historique |
|---|---|---|---|
| apc.enabled | "1" | INI_SYSTEM |
|
| apc.shm_segments | "1" | INI_SYSTEM |
|
| apc.shm_size | "32M" | INI_SYSTEM |
|
| apc.entries_hint | 512 * apc.shm_size | INI_SYSTEM |
Auparavant à APCu 5.1.25, la valeur par défaut était 4096 |
| apc.ttl | "0" | INI_SYSTEM |
|
| apc.gc_ttl | "3600" | INI_SYSTEM |
|
| apc.mmap_file_mask | NULL | INI_SYSTEM |
|
| apc.slam_defense | "0" | INI_SYSTEM |
|
| apc.enable_cli | "0" | INI_SYSTEM |
|
| apc.use_request_time | "0" | INI_ALL |
Antérieurement à APCu 5.1.19, la valeur par défaut était 1. |
| apc.serializer | "php" | INI_SYSTEM |
Antérieurement à APCu 5.1.15, la valeur par défaut était "default". |
| apc.coredump_unmap | "0" | INI_SYSTEM |
|
| apc.preload_path | NULL | INI_SYSTEM |
Voici un éclaircissement sur l'utilisation des directives de configuration.
apc.enabled
bool
apc.enabled peut être mis à 0 pour désactiver APC.
Cela peut s'avérer utile lorsqu'APC est compilé statiquement dans PHP
puisqu'il n'y a pas d'autre moyen de le désactiver (lorsque APC est
compilé en tant que DSO, la ligne extension
dans le fichier php.ini peut simplement être mise en
commentaire).
apc.shm_segments
int
apc.shm_size
est mis à la valeur maximale autorisée par le système, alors augmenter
cette valeur peut empêcher APC d'épuiser sa mémoire.
apc.shm_size
string
apc.entries_hint
int
apc.ttl
int
apc.ttl secondes. Ce paramètre n'a aucun
effet sur les entrées de cache pour lesquelles un un TTL explicite est spécifié.
apc.gc_ttl
int
0, le nettoyage basé sur le temps est désactivé,
et les entrées ne sont supprimées que lorsque leur nombre de références tombe à zéro.
apc.mmap_file_mask
string
--enable-mmap, ce paramètre reçoit le masque de
fichier de type mktemp-style à passer au module mmap pour déterminer
si la région de la mémoire utilisant mmap sera sauvegardée par le biais
d'un fichier ou par celui de la mémoire partagée.
Dans le cas où la sauvegarde se fait par le biais d'un fichier,
le masque sera de la forme /tmp/apc.XXXXXX
(avec exactement 6 X).
Pour utiliser shm_open/mmap de la norme POSIX, le masque doit contenir
.shm, comme dans l'exemple suivant:
/apc.shm.XXXXXX. Ce paramètre peut être défini par
/dev/zero pour utiliser l'interface
/dev/zero du noyau avec une mémoire utilisant mmap
anonymement. Laisser ce paramètre indéfini forcera un mmap anonyme.
apc.slam_defense
bool
apc.slam_defense sur 1
peut aider à empêcher plusieurs processus de mettre en cache
le même fichier simultanément en introduisant un mécanisme
de probabilité. Si la même clé est tentée d'être mise en cache
dans un court laps de temps par différents processus, elle saute
la mise en cache pour le processus actuel pour atténuer les éventuels
problèmes de mise en cache.
apc.enable_cli
int
apc.serializer
string
apc.coredump_unmap
bool
Cette option est potentiellement dangereuse. Désallouer un segment de mémoire partagée utilisé par mmap dans le gestionnaire de signaux fatals peut causer un comportement imprévisible si une erreur fatale survient.
Note: Bien que certains noyaux peuvent fournir la possibilité d'ignorer de nombreux types de mémoire partagée lorsqu'ils génèrent un fichier core dump, ces implémentations peuvent aussi ignorer d'importants segments de mémoire partagée tels que le tableau de bord d'Apache.
apc.preload_path
string
apc.use_request_time
bool