<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.basic.other.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'fr',
  ),
  'this' => 
  array (
    0 => 'book.yaconf.php',
    1 => 'Yaconf',
    2 => 'Yaconf',
  ),
  'up' => 
  array (
    0 => 'refs.basic.other.php',
    1 => 'Autres extensions basiques',
  ),
  'prev' => 
  array (
    0 => 'class.yaf-exception-loadfailed-view.php',
    1 => 'Yaf_Exception_LoadFailed_View',
  ),
  'next' => 
  array (
    0 => 'yaconf.setup.php',
    1 => 'Installation/Configuration',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'fr',
    'path' => 'reference/yaconf/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.yaconf.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.yaconf" class="book">
 
 <h1 class="title">Yaconf</h1>
 

 <div id="intro.yaconf" class="preface">
  <h1 class="title">Introduction</h1>
  <p class="simpara">
   <code class="literal">Yet Another Configurations Container</code>
   (<abbr>Yaconf</abbr>) est un conteneur de configuration. Il analyse
   les fichiers <code class="literal">INI</code> au démarrage de PHP et conserve le
   résultat en mémoire persistante pour toute la durée du cycle de vie de PHP,
   de sorte que chaque accès est une simple recherche dans une table de hachage,
   sans aucune E/S disque ni analyse par requête.
  </p>
  <p class="simpara">
   Yaconf enregistre toutes les configurations sous forme de chaînes internées
   ou de tableaux immuables. Ils ne sont pas comptabilisés dans les références,
   donc la récupération d&#039;une configuration depuis Yaconf est effectivement
   sans copie. Depuis Yaconf 1.2.0, l&#039;arbre de configuration analysé est en
   outre compacté dans un bloc contigu unique, ce qui réduit l&#039;empreinte
   mémoire et améliore la localité du cache.
  </p>
  <p class="simpara">
   La configuration analysée réside en mémoire persistante partagée par tous
   les workers PHP-FPM via la copie sur écriture : tant qu&#039;un fichier de
   configuration ne change pas, les workers partagent les mêmes pages mémoire
   physiques, quel que soit leur nombre.
  </p>
  <p class="simpara">
   Yaconf supporte les sections et l&#039;héritage de sections dans les fichiers
   INI. Sur les compilations non-ZTS, il recharge aussi les fichiers
   automatiquement lorsqu&#039;ils changent ; sur les compilations ZTS
   (thread-safe), les configurations sont chargées au démarrage et un
   redémarrage est nécessaire pour prendre en compte les modifications.
  </p>
  <p class="simpara">
   Depuis Yaconf 1.2.0, les sous-répertoires du répertoire configuré sont
   chargés récursivement (jusqu&#039;à 16 niveaux de profondeur) et adressés avec
   le nom du répertoire comme niveau de clé : par exemple,
   <code class="literal">Yaconf::get(&quot;users.database.master&quot;)</code> lit la clé
   <code class="literal">master</code> depuis le fichier
   <var class="filename">database.ini</var> placé dans le sous-répertoire
   <var class="filename">users/</var>.
  </p>
  <p class="simpara">
   Stocker des configurations sensibles en dehors de l&#039;arborescence web réduit
   aussi la surface d&#039;attaque. Avec Yaconf, les fichiers
   <var class="filename">.ini</var> peuvent être placés dans un répertoire accessible
   uniquement par root, comme <var class="filename">/etc/yaconf</var> : le master
   PHP-FPM charge les configurations au démarrage du service, tandis que les
   workers forqués — qui s&#039;exécutent sous un utilisateur non privilégié et
   traitent les requêtes web — n&#039;ont pas besoin, et ne reçoivent pas, l&#039;accès
   à ce répertoire.
  </p>
  <p class="simpara">
   Yaconf nécessite PHP 7.0 ou supérieur.
  </p>
 </div>

 





 









<ul class="chunklist chunklist_book"><li><a href="yaconf.setup.php">Installation/Configuration</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="yaconf.requirements.php">Pr&eacute;-requis</a></li><li><a href="yaconf.installation.php">Installation</a></li><li><a href="yaconf.configuration.php">Configuration &agrave; l'ex&eacute;cution</a></li><li><a href="yaconf.resources.php">Types de ressources</a></li></ul></li><li><a href="class.yaconf.php">Yaconf</a> — La classe Yaconf<ul class="chunklist chunklist_book chunklist_children"><li><a href="yaconf.debug-info.php">Yaconf::__debug_info</a> — Inspecte la fa&ccedil;on dont une valeur de configuration est stock&eacute;e</li><li><a href="yaconf.get.php">Yaconf::get</a> — R&eacute;cup&egrave;re une valeur de configuration par son nom</li><li><a href="yaconf.has.php">Yaconf::has</a> — V&eacute;rifie si une valeur de configuration existe</li></ul></li></ul></div><?php manual_footer($setup); ?>