<?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 => 'ru',
  ),
  'this' => 
  array (
    0 => 'book.yaconf.php',
    1 => 'Yaconf',
    2 => 'Yaconf',
  ),
  'up' => 
  array (
    0 => 'refs.basic.other.php',
    1 => 'Другие базовые модули',
  ),
  'prev' => 
  array (
    0 => 'class.yaf-exception-loadfailed-view.php',
    1 => 'Yaf_Exception_LoadFailed_View',
  ),
  'next' => 
  array (
    0 => 'yaconf.setup.php',
    1 => 'Установка и настройка',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    '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">Введение</h1>
  <p class="simpara">
   Модуль <code class="literal">Yet Another Configurations Container</code>
   (<abbr>Yaconf</abbr>) — контейнер конфигураций. Он разбирает
   <code class="literal">INI</code>-файлы при запуске PHP и хранит результат
   в постоянной памяти в течение всего жизненного цикла PHP, поэтому
   каждое обращение — это быстрый поиск в хеш-таблице без обращений
   к файлам и без разбора на каждый запрос.
  </p>
  <p class="simpara">
   Yaconf хранит каждую конфигурацию как интернированную строку или
   неизменяемый массив. Для таких данных не ведётся подсчёт ссылок,
   поэтому извлечение конфигурации из Yaconf фактически обходится
   без копирования. Начиная с Yaconf 1.2.0 всё разобранное дерево
   конфигураций вдобавок уплотняется в один непрерывный блок, что
   снижает накладные расходы по памяти и улучшает локальность кеша.
  </p>
  <p class="simpara">
   Разобранная конфигурация находится в постоянной памяти, которую все
   рабочие процессы PHP-FPM разделяют механизмом копирования при записи:
   пока файл конфигурации не изменился, рабочие процессы делят одни
   и те же физические страницы памяти, сколько бы их ни запустили.
  </p>
  <p class="simpara">
   Yaconf поддерживает в INI-файлах разделы и наследование разделов.
   В сборках без ZTS модуль вдобавок автоматически перезагружает файлы
   при их изменении; в потокобезопасных сборках (ZTS) конфигурации
   загружаются при запуске, и чтобы подхватить изменения, требуется
   перезапуск.
  </p>
  <p class="simpara">
   Начиная с Yaconf 1.2.0 подкаталоги настроенного каталога загружаются
   рекурсивно, на глубину до 16 уровней, и адресуются с названием каталога
   как уровнем ключа: например, вызов
   <code class="literal">Yaconf::get(&quot;users.database.master&quot;)</code> читает ключ
   <code class="literal">master</code> из файла <var class="filename">database.ini</var>,
   который положили в подкаталог <var class="filename">users/</var>.
  </p>
  <p class="simpara">
   Хранение чувствительных конфигураций вне веб-дерева вдобавок снижает
   поверхность атаки. Файлы конфигураций под корнем веб-сервера
   злоумышленник может получить, например через уязвимость раскрытия
   файлов. С модулем Yaconf файлы <var class="filename">.ini</var> вместо этого
   размещают в каталоге, который доступен на чтение только root,
   например <var class="filename">/etc/yaconf</var>: главный процесс PHP-FPM
   загружает конфигурации при запуске службы, а порождённым рабочим
   процессам, которые работают от непривилегированного пользователя
   и обрабатывают веб-запросы, доступ к этому каталогу не нужен
   и не предоставляется.
  </p>
  <p class="simpara">
   Для работы модуля Yaconf требуется PHP 7.0 или выше.
  </p>
 </div>

 





 






<ul class="chunklist chunklist_book"><li><a href="yaconf.setup.php">Установка и настройка</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="yaconf.requirements.php">Требования</a></li><li><a href="yaconf.installation.php">Установка</a></li><li><a href="yaconf.configuration.php">Настройка во время выполнения</a></li><li><a href="yaconf.resources.php">Типы ресурсов</a></li></ul></li><li><a href="class.yaconf.php">Yaconf</a> — Класс Yaconf<ul class="chunklist chunklist_book chunklist_children"><li><a href="yaconf.debug-info.php">Yaconf::__debug_info</a> — Показывает, как хранится значение конфигурации</li><li><a href="yaconf.get.php">Yaconf::get</a> — Получает значение конфигурации по названию</li><li><a href="yaconf.has.php">Yaconf::has</a> — Проверяет, существует ли значение конфигурации</li></ul></li></ul></div><?php manual_footer($setup); ?>