Files
php-doc-ru/reference/apcu/ini.xml
sergey 63da451bcf upd: actual en-revision
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@347581 c90b9560-bf6c-de11-be94-00142212c4b1
2019-06-08 21:55:31 +00:00

379 lines
17 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: 7ff4c27858f8cf53ca34a4c552ec4dcc09e2ab2b Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<!-- $Revision$ -->
<section xml:id="apcu.configuration" xmlns="http://docbook.org/ns/docbook">
&reftitle.runtime;
&extension.runtime;
<para>
Хотя настроек APCu по умолчанию вполне достаточно для большинства задач, но для
серьезных проектов необходимо внимательно изучить следующие настройки.
</para>
<para>
При настройке APCu необходимо определиться, сколько пямяти
предоставить в распоряжение APCu.
Директива ini-файла, ответственная за эту настройку - <literal>apc.shm_size</literal>.
Внимательно прочитайте нижеследующий раздел.
</para>
<para>
Как только сервер запущен, скрипт <literal>apc.php</literal>, поставляемый с
этим расширением, должен быть скопирован в "docroot" и права на него должны
позволять запустить его через браузер. Этот скрипт предоставляет детальную информацию
по работе APCu. Если в PHP разрешен GD, то этот скрипт также будет показывать
полезные графики. Конечно же первое, что будет интересно, это то, кеширует
ли APC что нибудь. Если APC работает, то значение <literal>Cache full count
</literal> (слева) будет показывать, сколько раз кеш был полностью заполнен и был
вынужден принудительно удалить записи, к которым не обращались последние
<literal>apc.ttl</literal> секунд. Чем меньше это число - тем лучше сконфигурирован кеш.
Если это число постоянно растет, значит APCu приходится постоянно очищать старые
записи и значит теряется весь смысл кеширования. Самый лучший способ
уменьшить это число - это добавить APCu памяти. Если сделать этого нельзя,
то надо перенастроить <literal>apc.filters</literal>, что бы ограничить набор
кешируемых скриптов.
</para>
<para>
Если APCu собран с поддержкой mmap (Memory Mapping), он будет использовать
всего один сегмент памяти, если же наоборот, APC собран с поддержкой SHM (SysV Shared
Memory), он будет использовать несколько сегментов. MMAP не имеет максимального
ограничения, в отличие от SHM, который ограничивается
<literal>/proc/sys/kernel/shmmax</literal>. Обычно рекомендуется использовать MMAP,
потому что он гораздо быстрее выделяет память при перезагрузке веб-сервера, что
сказывается на скорости запуска сервера.
</para>
<para>
<table>
<title>Опции конфигурации APCu</title>
<tgroup cols="4">
<thead>
<row>
<entry>&Name;</entry>
<entry>&Default;</entry>
<entry>&Changeable;</entry>
<entry>&Changelog;</entry>
</row>
</thead>
<tbody>
<row>
<entry><link linkend="ini.apcu.enabled">apc.enabled</link></entry>
<entry>"1"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.shm-segments">apc.shm_segments</link></entry>
<entry>"1"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.shm-size">apc.shm_size</link></entry>
<entry>"32M"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.entries-hint">apc.entries_hint</link></entry>
<entry>"4096"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.ttl">apc.ttl</link></entry>
<entry>"0"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.gc-ttl">apc.gc_ttl</link></entry>
<entry>"3600"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.mmap-file-mask">apc.mmap_file_mask</link></entry>
<entry>NULL</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.slam-defense">apc.slam_defense</link></entry>
<entry>"1"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.enable-cli">apc.enable_cli</link></entry>
<entry>"0"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.use-request-time">apc.use_request_time</link></entry>
<entry>"1"</entry>
<entry>PHP_INI_ALL</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.serializer">apc.serializer</link></entry>
<entry>"default"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.coredump-unmap">apc.coredump_unmap</link></entry>
<entry>"0"</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
<row>
<entry><link linkend="ini.apcu.preload-path">apc.preload_path</link></entry>
<entry>NULL</entry>
<entry>PHP_INI_SYSTEM</entry>
<entry></entry>
</row>
</tbody>
</tgroup>
</table>
&ini.php.constants;
</para>
&ini.descriptions.title;
<para>
<variablelist>
<varlistentry xml:id="ini.apcu.enabled">
<term>
<parameter>apc.enabled</parameter>
<type>boolean</type>
</term>
<listitem>
<para>
Если установить <literal>apc.enabled</literal> равным 0, то APCu не будет запущен.
Это полезно, когда APCu статически включен в PHP и нет других вариантов, для запрещения
его использования. Если APC собран как DSO, можно просто закомментировать строку
<literal>extension</literal> в <literal>php.ini</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.shm-segments">
<term>
<parameter>apc.shm_segments</parameter>
<type>integer</type>
</term>
<listitem>
<para>
Количество сегментов разделяемой памяти выделенной под кеш.
Если APC использовал всю доступную разделяемую память, а
<literal>apc.shm_size</literal> таким большим, как позволяет система, увеличение
этого параметра может помочь.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.shm-size">
<term>
<parameter>apc.shm_size</parameter>
<type>string</type>
</term>
<listitem>
<para>
Размер сегмента разделяемой памяти, заданный в короткой нотации (смотри
<link linkend="faq.using.shorthandbytes">этот FAQ</link>).
По умолчанию, некоторые системы (включая большинство вариантов BSD)
ограничивают это значение крайне малым значением.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.entries-hint">
<term>
<parameter>apc.entries_hint</parameter>
<type>integer</type>
</term>
<listitem>
<para>
Это подсказка о количестве уникальных пользовательских переменных,
которые надо кешировать. Установите равным нулю или вообще не
указывайте, если не уверены.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.ttl">
<term>
<parameter>apc.ttl</parameter>
<type>integer</type>
</term>
<listitem>
<para>
Количество секунд, которые запись может лежать в кеше без обращения к ней,
прежде чем будт разрешено ее заменить на другую.
Установка этого параметра равного нулю может привести к тому,
что все место будет забито и новые записи не смогут попасть в кеш.
В этом случае, если параметр равен 0, кеш будет полностью
очищен. Если же ttl будет больше нуля, то APCu постарается
очистить устаревшие записи.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.gc-ttl">
<term>
<parameter>apc.gc_ttl</parameter>
<type>integer</type>
</term>
<listitem>
<para>
Количество секунд, которые запись может находиться в
списке сборщика мусора. Это значение обеспечивает
безотказность в случае падения сервера в момент
исполнения закешированного файла.
Если исполняемый файл был изменен, память, выделенная
под кеширование его старой версии, не будет
возвращена до истечения этого времени.
Установка в ноль отключает этот функционал.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.mmap-file-mask">
<term>
<parameter>apc.mmap_file_mask</parameter>
<type>string</type>
</term>
<listitem>
<para>
Если собран с поддержкой MMAP, с помощью опции <literal>--enable-mmap</literal>,
этот параметр должен содержать файловую маску типа mktemp-style для
передачи в расширение MMAP, что бы определить, будет ли MMAP использовать
файловую систему или разделяемую память.
Для файловой системы задайте опцию как <literal>/tmp/apc.XXXXXX</literal>
(ровно 6 <literal>X</literal>).
Для использования shm_open/mmap в стиле POSIX, добавьте <literal>.shm</literal>
в любом месте маски, например <literal>/apc.shm.XXXXXX</literal>
Вы также можете установить его как <literal>/dev/zero</literal> для использования
интерфейса ядра <literal>/dev/zero</literal> для анонимной памяти mmap.
Если не задано, то будет принудительно использоваться анонимный mmap.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.slam-defense">
<term>
<parameter>apc.slam_defense</parameter>
<type>integer</type>
</term>
<listitem>
<para>
На очень загруженных серверах, когда вы запускаете веб-сервер,
сразу множество процессов будут пытаться закешировать один и тот-же
файл одновременно. Этой опцией задается вероятность, в процентах,
того, что попытка одного конкретного процесса закешировать данные
будет отклонена. Например если <literal>apc.slam_defense</literal>
установить равной <literal>75</literal>, то это означает, что
вероятность закешировать файл, которого в кеше нет,
будет равна 25% и вероятность того, что в кешировании будет
отказано равна 75%. Для запрета данного функционала установите
этот параметр равным <literal>0</literal>.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.enable-cli">
<term>
<parameter>apc.enable_cli</parameter>
<type>integer</type>
</term>
<listitem>
<para>
Больше для тестирования и отладки. Эта настройка разрешае APCu
для CLI версии PHP. При обычной работе, запускать APCu, который
будет создавать, наполнять и уничтожать кеш при каждом запуске
сценария в консоли, будет далеко не лучшей идеей. Но в целях
тестирования и отладки, можно легко включить APCu для CLI.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.serializer">
<term>
<parameter>apc.serializer</parameter>
<type>string</type>
</term>
<listitem>
<para>
Указывает APC использовать сторонний сериализатор.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.coredump-unmap">
<term>
<parameter>apc.coredump_unmap</parameter>
<type>boolean</type>
</term>
<listitem>
<para>
Разрешает APC перехватывать сигналы, такие как SIGSEGV, который записывает
coredump, когда подан. Когда эти сигналы будут получены, APC попытается
освободить всю разделяемую память, что бы не включать ее в coredump. Эта
настройка может увеличить стабильность системы, когда критический сигнал был получен,
а APC сконфигурирован на использование большого объема памяти.
</para>
<warning>
<para>
Эта возможность потенциально опасна. Освобождение сегментов разделяемой
памяти при получении критического сигнала может привести к непредсказуемому
поведению.
</para>
</warning>
<note>
<para>
Хотя некоторые ядра предоставляют возможность игнорировать некоторые
сегменты разделяемой памяти при записи core-файла, эти реализации
могут также игнорировать важные сегменты памяти, такие как Apache scoreboard.
</para>
</note>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.preload-path">
<term>
<parameter>apc.preload_path</parameter>
<type>string</type>
</term>
<listitem>
<para>
Опционально. Задает путь, который используется APC для загрузки кешированных данных
во время запуска.
</para>
</listitem>
</varlistentry>
<varlistentry xml:id="ini.apcu.use-request-time">
<term>
<parameter>apc.use_request_time</parameter>
<type>bool</type>
</term>
<listitem>
<para>
Использовать время старта запроса <acronym>SAPI</acronym> для
<acronym>TTL</acronym>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</section>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->