<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/oci8.setup.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ru',
  ),
  'this' => 
  array (
    0 => 'oci8.configuration.php',
    1 => 'Настройка во время выполнения',
    2 => 'Настройка во время выполнения',
  ),
  'up' => 
  array (
    0 => 'oci8.setup.php',
    1 => 'Установка и настройка',
  ),
  'prev' => 
  array (
    0 => 'oci8.test.php',
    1 => 'Тестирование',
  ),
  'next' => 
  array (
    0 => 'oci8.constants.php',
    1 => 'Предопределённые константы',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ru',
    'path' => 'reference/oci8/ini.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="oci8.configuration" class="section">
 <h2 class="title">Настройка во время выполнения</h2>
 <p class="simpara">
Поведение функций зависит от установок в файле <var class="filename">php.ini</var>.
</p>
 <p class="para">
  <table class="doctable table">
   <caption><strong>Параметры конфигурации OCI8</strong></caption>
   
    <thead>
     <tr>
      <th>Имя</th>
      <th>По умолчанию</th>
      <th>Место изменения</th>
      <th>Список изменений</th>
     </tr>

    </thead>

    <tbody class="tbody">
     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.connection-class" class="link">oci8.connection_class</a></td>
      <td>&quot;&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-all">INI_ALL</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.default-prefetch" class="link">oci8.default_prefetch</a></td>
      <td>&quot;100&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.events" class="link">oci8.events</a></td>
      <td>Off</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.max-persistent" class="link">oci8.max_persistent</a></td>
      <td>&quot;-1&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td>Объявлена устаревшей, начиная с PHP 8.1.0.</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.old-oci-close-semantics" class="link">oci8.old_oci_close_semantics</a></td>
      <td>Off</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.persistent-timeout" class="link">oci8.persistent_timeout</a></td>
      <td>&quot;-1&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.ping-interval" class="link">oci8.ping_interval</a></td>
      <td>&quot;60&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.prefetch-lob-size" class="link">oci8.prefetch_lob_size</a></td>
      <td>&quot;0&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td>Доступна начиная с версии PECL OCI8 3.2.</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.privileged-connect" class="link">oci8.privileged_connect</a></td>
      <td>Off</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

     <tr>
      <td><a href="oci8.configuration.php#ini.oci8.statement-cache-size" class="link">oci8.statement_cache_size</a></td>
      <td>&quot;20&quot;</td>
      <td><strong><code><a href="info.constants.php#constant.ini-system">INI_SYSTEM</a></code></strong></td>
      <td class="empty">&nbsp;</td>
     </tr>

    </tbody>
   
  </table>

 </p>

 <p class="para">Краткое разъяснение конфигурационных
директив.</p>

 <p class="para">
  <dl>
   
    <dt id="ini.oci8.connection-class">
     <code class="parameter">oci8.connection_class</code>
     <span class="type"><a href="language.types.string.php" class="type string">string</a></span>
    </dt>
    <dd>
     <p class="para">
      Этот определяемый пользователем текст обязательно должен быть задан
      при использовании резидентного пула соединений базы данных Oracle
      (Database Resident Connection Pooling (DRCP)). Это позволяет
      суб-партиционирование пула соединений DRCP, что позволяет
      постоянным соединениям OCI8 из приложения заново использовать
      сессии базы данных от предыдущего PHP-скрипта, улучшая
      масштабируемость. Если приложение использует процесс из пула
      базы данных, ранее используемый с другим классом соединений,
      настройки сессии, такие как формат даты Oracle, будут сброшены.
      Это предотвращает случайный обмен информацией между
      различными приложениями.
     </p>
     <p class="para">
      Значение может быть установлено во время выполнения скрипта
      с помощью <span class="function"><a href="function.ini-set.php" class="function">ini_set()</a></span> до установки соединения.
     </p>
     <p class="para">
      Для использования DRCP, OCI8 должна быть собрана с библиотеками
      Oracle 11<em>g</em> или новее и база данных должна
      быть Oracle 11<em>g</em> или новее.
      Пул соединений DRCP в базе данных должен быть включён,
      <code class="literal">oci8.connection_class</code> должно быть установлено
      в одно и то же строковое значение для всех веб-серверов,
      выполняющих одно и то же приложение, а строка соединения OCI8
      должна указывать на сервер из пула. Приложение должно
      использовать постоянные соединения.
     </p>
    </dd>
   
   
    <dt id="ini.oci8.default-prefetch">
     <code class="parameter">oci8.default_prefetch</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Эта опция устанавливает значение по умолчанию для
      количества экстра рядов, которые будут возвращены и
      автоматически закешированы при низкоуровневом запросе
      данных из базы данных.
      Установка значения в <code class="literal">0</code> выключает
      предварительную выборку (prefetching).
     </p>
     <p class="para">
      Значение предварительной выборки не меняет количество
      возвращаемых пользователю рядов такими функциями как
      <span class="function"><a href="function.oci-fetch-array.php" class="function">oci_fetch_array()</a></span>;
      OCI8 внутренне обрабатывает предварительную выборку
      и кеширование рядов.
     </p>
     <p class="para">
      Значение может быть установлено отдельно для каждого выражения
      (per-statement) с помощью <span class="function"><a href="function.oci-set-prefetch.php" class="function">oci_set_prefetch()</a></span>
      до выполнения самого выражения.
     </p>
     <p class="para">
      При использовании Oracle Database 12<em>c</em> или новее, предварительное
      значение, заданное PHP, может быть переопределено
      клиентским конфигурационным файлом Oracle <code class="literal">oraaccess.xml</code>.
      Обратитесь к документации Oracle.
     </p>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Большая предварительная выборка может улучшить производительность
       за счёт некоторого увеличенного использования памяти.
       Для запросов, возвращающих большие массивы данных, выгода
       в производительности будет значительной.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.events">
     <code class="parameter">oci8.events</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Включение (<code class="literal">On</code>) позволяет уведомить PHP
      о событиях Быстрого Уведомления Приложений базы данных
      (Fast Application Notification (FAN)).
     </p>
     <p class="para">
      Без FAN, если экземпляр базы данных или узел машины
      неожиданно даст сбой, PHP приложения могут быть заблокированы,
      ожидая ответа от базы данных до превышения времени ожидания TCP.
      С помощью событий FAN PHP приложения быстро будут уведомлены
      о сбоях, которые влияют на установленные ими соединения к
      базе данных. Модуль OCI8 подчистит неиспользуемые соединения
      в кеше постоянных соединений.
     </p>
     <p class="para">
      При использовании директивы (<code class="literal">On</code>),
      база данных также должна быть настроена на отправку
      FAN событий.
     </p>
     <p class="para">
      Поддержка FAN доступна, если OCI8 была слинкована с библиотеками
      Oracle 10<em>g</em>R2 (или более поздними) и соединение было осуществлено к
      Oracle Database 10<em>g</em>R2 (или более поздней версии).
     </p>
    </dd>
   
   
    <dt id="ini.oci8.max-persistent">
     <code class="parameter">oci8.max_persistent</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Максимальное количество постоянных соединений OCI8
      на один PHP процесс. Установка этой опции в -1 означает
      отсутствие лимита.
     </p>
    </dd>
   
   
    <dt id="ini.oci8.old-oci-close-semantics">
     <code class="parameter">oci8.old_oci_close_semantics</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Эта опция контролирует поведение функции <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span>.
      Её включение означает, что <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span> не делает
      ничего; соединение не будет закрыто, пока не закончится
      выполнение скрипта. Это сделано только в целях обратной
      совместимости. Если вы ощущаете потребность в этой настройке,
      <em>строго рекомендуется</em> настроить вызовы
      <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span> в ваших скриптах вместо включения
      этой опции.
     </p>
    </dd>
   
   
    <dt id="ini.oci8.persistent-timeout">
     <code class="parameter">oci8.persistent_timeout</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Максимальное количество секунд, которое разрешается
      PHP-процессу держать неиспользуемое постоянное соединение
      открытым. Установка этой опции в -1 означает, что
      неиспользуемые соединения будут удержаны, пока PHP-процесс
      не завершит своё выполнение или соединение не будет
      принудительно закрыто с помощью функции <span class="function"><a href="function.oci-close.php" class="function">oci_close()</a></span>.
     </p>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       В PHP истечение срока действия неиспользуемых ресурсов не основано
       на уведомлениях. Оно случается когда PHP завершает обработку
       скрипта и проверяет отметку времени последних использованных
       ресурсов. Отсюда возникает следующий парадокс: неиспользуемые
       соединения могут быть закрыты только когда есть некоторая
       активность (хотя и не обязательно связанная с OCI8) в PHP-процессе.
       Если присутствует более одного PHP-процесса, то каждый из них в отдельности должен
       быть приведён в действие для того, чтобы инициировать истечение
       срока действия простаивающих ресурсов.
       Введение резидентного пула соединений базы данных (DRCP) в Oracle 11<em>g</em>
       разрешает проблемы с памятью и ресурсами, которые
       ранее пытались решить <code class="literal">oci8.max_persistent</code>
       и <code class="literal">oci8.persistent_timeout</code>.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.ping-interval">
     <code class="parameter">oci8.ping_interval</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Количество секунд, которое должно пройти до совершения пинга
      в течение выполнения <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span>. Пинг
      обеспечивает корректность соединения базы данных.
      Если установлена в 0, постоянные соединения будут пинговаться
      при каждом вызове <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span>. Для полного
      отключения пингов установите эту опцию в -1.
     </p>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Отключение пингов позволяет <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span>
       действовать с максимальной эффективностью, но PHP может быть
       неспособен определить непригодные соединения, например, при
       обрыве сети или при отключении базы данных Oracle после того,
       как PHP установил соединение, пока соединение вновь не будет
       использовано в скрипте. Проконсультируйтесь с документацией
       функции <span class="function"><a href="function.oci-pconnect.php" class="function">oci_pconnect()</a></span> для более подробной
       информации.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.prefetch-lob-size">
     <code class="parameter">oci8.prefetch_lob_size</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Параметр настройки, влияющий на внутреннюю буферизацию данных LOB.
      Увеличение этого значения может улучшить производительность выборки меньших LOB за счёт сокращения круговых обходов между PHP и базой данных.
      Использование памяти изменится.
     </p>
     <p class="para">
      Значение влияет на LOB, возвращаемые как экземпляры OCILob, а также на те, которые возвращаются с использованием <strong><code><a href="oci8.constants.php#constant.oci-return-lobs">OCI_RETURN_LOBS</a></code></strong>.
     </p>
     <p class="para">
      Значение может быть установлено для каждого оператора
      с помощью функции <span class="function"><a href="function.oci-set-prefetch-lob.php" class="function">oci_set_prefetch_lob()</a></span> до выполнения оператора.
     </p>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Используйте с Oracle Database 12.2 или новее.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.privileged-connect">
     <code class="parameter">oci8.privileged_connect</code>
     <span class="type"><a href="language.types.boolean.php" class="type bool">bool</a></span>
    </dt>
    <dd>
     <p class="para">
      Эта опция позволяет соединениям использовать привилегированные
      внешние учётные записи
      <strong><code><a href="oci8.constants.php#constant.oci-sysoper">OCI_SYSOPER</a></code></strong> или <strong><code><a href="oci8.constants.php#constant.oci-sysdba">OCI_SYSDBA</a></code></strong>.
     </p>
     <blockquote class="note"><p><strong class="note">Замечание</strong>: 
      <span class="simpara">
       Установка этой директивы в <code class="literal">On</code> позволит
       скриптам, запущенных с соответствующими пользовательскими
       привилегиями операционной системы, соединяться с базой данных
       в качестве привилегированных пользователей базы данных
       без требования пароля. Это может быть брешью системы безопасности.
      </span>
     </p></blockquote>
    </dd>
   
   
    <dt id="ini.oci8.statement-cache-size">
     <code class="parameter">oci8.statement_cache_size</code>
     <span class="type"><a href="language.types.integer.php" class="type int">int</a></span>
    </dt>
    <dd>
     <p class="para">
      Эта опция включает кеширование выражений, а также указывает
      сколько выражений необходимо кешировать. Для отключения
      кеширования выражений просто установите значение этой опции
      в 0.
     </p>
     <p class="para">
      Кеширование выражений убирает необходимость передавать текст
      выражения к базе данных, а также обратную передачу различных
      метаданных об этом выражении обратно к PHP.
      Это может значительно улучшить общую производительность
      системы в приложениях, повторно использующих выражения в
      течение жизни одного соединения. Некоторые дополнительные
      &quot;курсоры&quot; баз данных могут остаться открытыми,
      подразумевая, что данные выражения будут использованы повторно.
     </p>
     <p class="para">
      Установите это значение размером рабочего набора выражений,
      используемых вашим приложением. Установка слишком малого значения
      может повлечь выброс выражений из кеша до их повторного использования.
     </p>
     <p class="para">
      Эта опция чаще всего используется с постоянными соединениями.
     </p>
     <p class="para">
      При использовании Oracle Database 12<em>c</em> или выше,
      предварительное
      значение, заданное PHP, можно переопределить
      клиентским конфигурационным файлом Oracle <code class="literal">oraaccess.xml</code>.
      Обратитесь к документации Oracle.
     </p>
    </dd>
   
  </dl>
 </p>
</div><?php manual_footer($setup); ?>