Installation
Types de ressources
Installation/Configuration
PHP Manual

## Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Bien que la configuration par défaut d'APC soit suffisante pour la plupart des installations, les utilisateurs avancés devraient affiner les paramètres suivants.

Il y a deux décisions importantes que vous devez faire. D'abord, la quantité de mémoire partagée que vous voulez allouer à APC et ensuite, si vous voulez qu'APC vérifie si un fichier a été vérifié à chaque demande. Les deux options de configuration concernées sont apc.shm_size et apc.stat. Lisez avec attention la section suivante sur ces deux options de configuration.

Une fois que vous avez un serveur qui fonctionne, vous devez copier le script apc.php fourni avec l'extension dans un endroit accessible par le serveur web, puis, appelez-le depuis votre navigateur. Il vous fournit tous les détails de votre cache. Si GD est actif sur votre configuration PHP, il y aura aussi de jolis graphiques. La première chose à vérifier est s'il y a actuellement des fichiers en cache. En supposant que cela fonctionne, vous devez donc faire attention au nombre Cache full count sur la gauche. Il indique le temps depuis lequel le cache a été créé et qui doit effacer les entrées non utilisées depuis apc.ttl secondes. Vous devriez configurer votre cache pour minimiser ce nombre. Si vous remplissez constamment votre cache, la génération du cache résultant va prendre beaucoup de ressources. Vous devriez soit allouer plus de mémoire pour APC, soit utiliser apc.filters pour mettre en cache moins de scripts.

Options de configuration APC
Nom | Défaut | Modifiable | Changelog
--- | --- | --- | ---
apc.enabled | "1" | PHP_INI_SYSTEM | PHP_INI_SYSTEM avec APC 2. PHP_INI_ALL avec APC <= 3.0.12p2
apc.shm_segments | "1" | PHP_INI_SYSTEM |
apc.shm_size | "30" | PHP_INI_SYSTEM |
apc.optimization | "0" | PHP_INI_ALL | PHP_INI_SYSTEM avec APC 2. Supprimé depuis APC 3.0.13.
apc.num_files_hint | "1000" | PHP_INI_SYSTEM |
apc.user_entries_hint | "4096" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.0.
apc.ttl | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.0.
apc.user_ttl | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.0.
apc.gc_ttl | "3600" | PHP_INI_SYSTEM |
apc.cache_by_default | "1" | PHP_INI_ALL | PHP_INI_SYSTEM avec APC <= 3.0.12p2. Disponible depuis APC 3.0.0.
apc.filters | NULL | PHP_INI_SYSTEM |
apc.mmap_file_mask | NULL | PHP_INI_SYSTEM |
apc.slam_defense | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.0.
apc.file_update_protection | "2" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.6.
apc.enable_cli | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.7.
apc.max_file_size | "1M" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.7.
apc.stat | "1" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.10.
apc.write_lock | "1" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.11.
apc.report_autofilter | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.11.
apc.include_once_override | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.12.
apc.rfc1867 | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.13.
apc.rfc1867_prefix | "upload_" | PHP_INI_SYSTEM |
apc.rfc1867_name | "APC_UPLOAD_PROGRESS" | PHP_INI_SYSTEM |
apc.rfc1867_freq | "0" | PHP_INI_SYSTEM |
apc.localcache | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.14.
apc.localcache.size | "512" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.14.
apc.coredump_unmap | "0" | PHP_INI_SYSTEM | Disponible depuis APC 3.0.16.

Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à Directives du php.ini.

Voici un éclaircissement sur l'utilisation des directives de configuration.

`apc.enabled` boolean

  apc.enabled peut être défini à 0 pour désactiver APC. Ceci est utile lorsque APC est compilé statiquement dans PHP, et qu'il n'y a donc aucun autre moyen de le désactiver (lorsque compilé en tant que DSO, la ligne extension dans le php.ini peut juste être commentée).

`apc.shm_segments` integer

  Le nombre de segments mémoire à allouer pour le cache compilé. Si APC fonctionne en dehors de la mémoire partagée mais que vous avez déjà défini apc.shm_size aussi élevé que votre système le permet, vous pouvez tenter de relever cette valeur.

`apc.shm_size` integer

  La taille de chaque segment de mémoire partagé en MB. Par défaut, quelques systèmes (incluant la plupart des BSD) ont une limite basse de la taille d'un segment mémoire partagé.

`apc.optimization` integer

  Le degré d'optimisation. Zéro désactive l'optimiseur, et de hautes valeurs utilisent des optimisations agressives. Attendez-vous à des améliorations très modestes de vitesse. Ceci est expérimental.

`apc.num_files_hint` integer

  Un "conseil" au sujet du nombre de fichiers sources distincts qui seront inclus ou demandés sur votre serveur web. Placez à zéro ou omettez-le si vous n'êtes pas sûr ; cet arrangement est principalement utile pour les sites qui ont des milliers de fichiers sources.

`apc.user_entries_hint` integer

  Tout comme apc.num_files_hint, un "hint" à propos du nombre de variables utilisateur distinctes de cache à stocker. Définissez le à 0 ou ne le définissez pas si vous n'êtes pas sûr.

`apc.ttl` integer

  Le nombre de secondes qu'une entrée de cache est autorisée à stagner dans un slot dans le cas où ce slot d'entrée de cache est nécessaire pour une autre entrée. Laisser à zéro signifie que votre cache pourrait potentiellement remplir d'autres entrées tant que d'autres entrées ne seront pas mises en cache.

`apc.user_ttl` integer

  Le nombre de secondes qu'une entrée utilisateur du cache est autorisé à résider dans un slot dans le cas où ce slot d'entrée de cache est demandé par une autre entrée. Laisser cette option à zéro signifie que votre cache peut potentiellement être rempli avec des entrées obsolètes lorsqu'il n'y a eu jamais d'entrées mises en cache.

`apc.gc_ttl` integer

  Le nombre de secondes qu'une entrée de cache peut rester dans la liste de la collection. Cette valeur fournit une sécurité dans le cas où le processus du serveur meurt lors de l'exécution d'un fichier source mis en cache ; si cette source est modifiée, la mémoire allouée pour l'ancienne version ne sera pas demandée tant que ce TTL ne sera pas atteint. Définissez-le à zéro pour désactiver cette fonctionnalité.

`apc.cache_by_default` boolean

  Actif par défaut, mais peut être désactivé et utilisé en conjonction avec un apc.filters positif donc ces fichiers seront uniquement mis en cache s'ils correspondent à un filtre positif.

`apc.filters` string

  Une liste séparée par des virgules d'expressions rationnelles POSIX. Si un seul masque correspond à un nom de fichier source, le fichier ne sera pas mis en cache. Notez que le nom du fichier utilisé pour le masque est celui passé aux instructions include() require(), et non un chemin absolu. Si le premier caractère de l'expression est un + alors l'expression sera additive dans le sens que chaque fichier correspondant à l'expression sera mis en cache, et si le premier caractère est un - alors tout ce qui correspond ne sera pas mis en cache. Le cas du - est celui par défaut, donc, il peut être omis.

`apc.mmap_file_mask` string

  Si compilé avec le support MMAP en utilisant --enable-mmap, ce sera le style mktemp de masque de fichier à passer au module MMAP pour déterminer si votre région de mémoire MMAP va être mise dans un fichier ou en mémoire partagée. Dans le cas de la mise en cache dans un fichier MMAP, définissez ce paramètre comme /tmp/apc.XXXXXX (exactement 6 X). Pour utiliser le style POSIX shm_open/mmap, placez un .shm quelque part dans votre masque, e.g. /apc.shm.XXXXXX. Vous pouvez également définir ce paramètre à /dev/zero pour utiliser votre interface kernel /dev/zero pour la mémoire anonyme MMAP. Le laisser indéfini forcera un MMAP anonyme.

`apc.slam_defense` integer

  Sur les serveurs très surchargés lorsque vous démarrez le serveur ou modifiez des fichiers, vous pouvez créer une race contenant plusieurs processus pour mettre en cache le même fichier en même temps. Cette option définit le pourcentage de processus qui évitera de tenter de mettre en cache un fichier non mise en cache. Ou pensez à lui comme probabilité d'un processus simple pour éviter la mise en cache. Par exemple, définir apc.slam_defense à 75 signifie qu'il y a 75 % de chances que le processus ne mettra pas en cache un fichier qui ne s'y trouvera pas déjà. Définir à 0 pour désactiver cette fonctionnalité.

  Obsolète avec apc.write_lock.

`apc.file_update_protection` integer

  Lorsque vous modifiez un fichier sur un serveur web, vous devriez le faire d'une façon atomique. Écrivez-le dans un fichier temporaire et renommez-le (mv) vers sa position permanente lorsqu'il est prêt. La plupart des éditeurs de texte, cp, tar et les autres programmes de ce genre ne font pas cela. Cela signifie qu'il y a une chance pour que le fichier soit accédé (et donc, mis en cache) alors qu'il est encore en cours d'écriture. Ce paramètre apc.file_update_protection fait intervenir un délai pour la mise en cache des nouveaux fichiers. Par défaut, il vaut 2 secondes, ce qui signifie que si le timestamp de modification (mtime) d'un fichier montre qu'il vaut moins de 2 secondes, ce fichier ne sera pas mis en cache. La personne malheureuse qui a accédé à ce dossier moitié écrit immobile verra une ébauche, mais au moins lui ne persistera pas. Si vous êtes certain de mettre toujours et automatiquement à jour vos fichiers en utilisant quelque chose comme rsync qui fait cela correctement, vous pouvez désactiver cette protection en le définissant à 0. Si vous avez une application très intensive sur le disque, qui force les procédures de mise à jour à prendre plus de 2 secondes, vous pourriez vouloir augmenter la valeur de cette directive.

`apc.enable_cli` integer

  Pour tester et déboguer. Définir ceci active APC pour la version CLI de PHP. Normalement, vous ne devriez pas vouloir créer, peupler et démonter le cache APC à chaque requête CLI, mais pour divers scénarios de test, elle est maniable afin de pouvoir activer facilement APC pour la version CLI d'APC.

`apc.max_file_size` integer

  Permet d'éviter la mise en cache des fichiers dont la taille est supérieure à cette valeur. Par défaut, 1Mo.

`apc.stat` integer

  Faites très attention si vous modifiez cette valeur. Par défaut, APC vérifie le script à chaque demande pour voir s'il a été modifié ou non. S'il a été modifié, il sera compilé à nouveau et la nouvelle version sera mise en cache. En désactivant cette option, aucune vérification n'aura lieu. Cela signifie que si vous voulez activer les modifications, vous devez redémarrer le serveur web. Sur un serveur de production où vous modifiez rarement le code, le fait de désactiver cette option permet de gagner en performances de manière significative.

  Pour les fichiers inclus/requis, cette option est également appliquée, mais notez que si vous utilisez des chemins relatifs (n'importe quel chemin qui ne commence pas par un / sous Unix), APC doit identifier de manière unique le fichier à vérifier. Si vous utilisez des chemins absolus pour vos inclusions, APC peut éviter ces vérifications et utiliser ce chemin absolu en tant qu'identifiant unique du fichier.

`apc.write_lock` boolean

  Sur les serveurs très chargés, lorsque vous démarrez le serveur, ou lorsque beaucoup de fichiers sont modifiés, vous pouvez en finir avec les processus qui tentent de compiler et mettre en cache le même fichier. Lorsque `apc.write_lock` est activé, uniquement un seul processus à la fois tentera de compiler un script de mise en cache tandis que les autres processus exécuteront les fichiers non mis en cache au lieu d'attendre que le verrou se libère.

`apc.report_autofilter` boolean

  Logs tous les scripts qui sont automatiquement exclus de la mise en cache à cause de problèmes de liage.

`apc.include_once_override` boolean

  Optimise les appels aux fonctions include_once() et require_once() et évite ainsi de surcharger le système appelant.

`apc.rfc1867` boolean

  Le gestionnaire de progression de téléchargement de fichier RFC1867 n'est disponible que si vous avez compilé APC avec PHP 5.2.0 ou supérieur. Lors le support est actif, les fichiers téléchargés qui incluent un champ appelé APC_UPLOAD_PROGRESS avant le champ "file" d'un formulaire de téléchargement fera qu'APC créera automatiquement une entrée de cache utilisateur nommée upload_key où key est la valeur de l'entrée de formulaire APC_UPLOAD_PROGRESS.

  Notez que la surveillance du téléchargement de fichier n'est pas compatible avec les threads pour le moment, ainsi, les nouveaux téléchargements survenant tandis qu'un précédent est toujours en cours désactivera la surveillance précédente.

  Exemple #1 Exemple avec apc.rfc1867

  `<?php
  print_r(apc_fetch("upload_$_POST[APC_UPLOAD_PROGRESS]"));
  ?>`

  L'exemple ci-dessus va afficher quelque chose de similaire à :

      Array
      (
          [total] => 1142543
          [current] => 1142543
          [rate] => 1828068.8
          [filename] => test
          [name] => file
          [temp_filename] => /tmp/php8F
          [cancel_upload] => 0
          [done] => 1
      )

`apc.rfc1867_prefix` string

  Préfixe de la clé à utiliser pour l'entrée de cache utilisateur généré par la fonctionnalité de progression de téléchargement RFC1867.

`apc.rfc1867_name` string

  Spécifie le nom de l'entrée cachée du formulaire qui active la progression du téléchargement et spécifie le suffixe de la clé du cache utilisation.

`apc.rfc1867_freq` string

  La fréquence à laquelle la mise à jour doit être effectuée pour l'entrée du cache utilisateur pour la progression du téléchargement. Peut prendre la forme d'un pourcentage de la taille totale du fichier ou une taille, en octets, optionnellement suffixée par "k", "m", ou "g" pour kilo-octets, méga-octets ou giga-octets (insensible à la casse). Si vous définissez cette option à 0, la mise à jour intervient aussi souvent que possible, ce qui peut rendre le téléchargement plus lent.

`apc.localcache` boolean

  Ceci active un processus d'interface locale libre de cache, ce qui réduit les controverses de verrous lorsque le cache est sur le point d'être écrit.

`apc.localcache.size` integer

  La taille du processus d'interface locale libre de cache, doit être définit à une valeur suffisamment élevée, soit approximativement la moitié de la valeur de apc.num_files_hint.

`apc.coredump_unmap` boolean

  Active la gestion APC des signaux, comme SIGSEGV, qui écrit les fichiers internes lorsqu'il est émis. Lorsque ces signaux sont reçus, APC tentera de détacher les segments de la mémoire partagées afin de les exclure du fichier interne. Cette configuration devrait rendre plus stable le système lorsque des signaux fatales sont reçus et qu'un gros segment APC de mémoire partagée est configuré.

  Avertissement

  Cette fonctionnalité est potentiellement dangereuse. Le détachement d'un segment de mémoire partagée dans un gestionnaire de signaux fatales peut produire à une comportement indéterminé si une erreur fatale survient.

  > Note: Bien que quelques noyaux puissent ignorer divers types de mémoire partagée lors de la génération du fichier interne, ces implémentations peuvent également ignorer d'importants segments de mémoire partagée tel que le scoreboard d'Apache.

Installation
Types de ressources
Installation/Configuration
PHP Manual