<?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 => 'es',
  ),
  'this' => 
  array (
    0 => 'book.yaconf.php',
    1 => 'Yaconf',
    2 => 'Yaconf',
  ),
  'up' => 
  array (
    0 => 'refs.basic.other.php',
    1 => 'Otras extensiones b&aacute;sicas',
  ),
  'prev' => 
  array (
    0 => 'class.yaf-exception-loadfailed-view.php',
    1 => 'Yaf_Exception_LoadFailed_View',
  ),
  'next' => 
  array (
    0 => 'yaconf.setup.php',
    1 => 'Instalaci&oacute;n/Configuraci&oacute;n',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'es',
    '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">Introducción</h1>
  <p class="simpara">
   <code class="literal">Yet Another Configurations Container</code>
   (<abbr>Yaconf</abbr>) es un contenedor de configuraciones. Analiza
   los archivos <code class="literal">INI</code> cuando PHP se inicia y conserva el
   resultado en memoria persistente durante todo el ciclo de vida de PHP,
   de modo que cada recuperación es una rápida búsqueda en una tabla hash,
   sin E/S de archivos y sin análisis por petición.
  </p>
  <p class="simpara">
   Yaconf almacena todas las configuraciones como cadenas internalizadas o
   arrays inmutables. No están sujetas al conteo de referencias, por lo que
   recuperar una configuración de Yaconf es, en la práctica, una operación
   sin copia. Desde Yaconf 1.2.0, todo el árbol de configuración analizado
   se compacta además en un único bloque contiguo, lo que reduce el consumo
   de memoria y mejora la localidad de caché.
  </p>
  <p class="simpara">
   La configuración analizada reside en memoria persistente compartida por
   todos los procesos de trabajo de PHP-FPM mediante copia al escribir:
   mientras un archivo de configuración no cambie, los procesos de trabajo
   comparten las mismas páginas físicas de memoria sin importar cuántos
   estén en ejecución.
  </p>
  <p class="simpara">
   Yaconf admite secciones y herencia de secciones en los archivos INI. En
   las compilaciones no ZTS también recarga los archivos automáticamente
   cuando cambian; en las compilaciones ZTS (seguras para hilos), las
   configuraciones se cargan al inicio y es necesario reiniciar para tener
   en cuenta los cambios.
  </p>
  <p class="simpara">
   Desde Yaconf 1.2.0, los subdirectorios del directorio configurado se
   cargan de forma recursiva (hasta 16 niveles de profundidad) y se
   referencian usando el nombre del directorio como un nivel de clave: por
   ejemplo, <code class="literal">Yaconf::get(&quot;users.database.master&quot;)</code> lee la
   clave <code class="literal">master</code> del archivo
   <var class="filename">database.ini</var> situado en el subdirectorio
   <var class="filename">users/</var>.
  </p>
  <p class="simpara">
   Almacenar las configuraciones sensibles fuera del árbol web también
   reduce la superficie de ataque. Los archivos de configuración situados
   bajo la raíz web pueden ser recuperados por un atacante, por ejemplo a
   través de una vulnerabilidad de divulgación de archivos. Con Yaconf, los
   archivos <var class="filename">.ini</var> pueden colocarse en su lugar en un
   directorio legible únicamente por root, como
   <var class="filename">/etc/yaconf</var>: el proceso maestro de PHP-FPM carga las
   configuraciones cuando el servicio arranca, mientras que los procesos de
   trabajo derivados —que se ejecutan con un usuario sin privilegios y son
   los que atienden las peticiones web— no necesitan, y no reciben, acceso a
   ese directorio.
  </p>
  <p class="simpara">
   Yaconf requiere PHP 7.0 o superior.
  </p>
 </div>

 






 









<ul class="chunklist chunklist_book"><li><a href="yaconf.setup.php">Instalaci&oacute;n/Configuraci&oacute;n</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="yaconf.requirements.php">Requisitos</a></li><li><a href="yaconf.installation.php">Instalaci&oacute;n</a></li><li><a href="yaconf.configuration.php">Configuraci&oacute;n en tiempo de ejecuci&oacute;n</a></li><li><a href="yaconf.resources.php">Tipos de recursos</a></li></ul></li><li><a href="class.yaconf.php">Yaconf</a> — La clase Yaconf<ul class="chunklist chunklist_book chunklist_children"><li><a href="yaconf.debug-info.php">Yaconf::__debug_info</a> — Inspect how a configuration value is stored</li><li><a href="yaconf.get.php">Yaconf::get</a> — Recupera un valor de configuraci&oacute;n por su nombre</li><li><a href="yaconf.has.php">Yaconf::has</a> — Comprueba si existe un valor de configuraci&oacute;n</li></ul></li></ul></div><?php manual_footer($setup); ?>