Настройка во время выполнения

Поведение этих функций зависит от установок в php.ini.

Опции настройки OPcache
Имя По умолчанию Место изменения Список изменений
opcache.enable "1" PHP_INI_ALL  
opcache.enable_cli "0" PHP_INI_SYSTEM В версиях с PHP 7.1.2 по 7.1.6 включительно, значение по умолчанию "1" (включено)
opcache.memory_consumption "128" PHP_INI_SYSTEM  
opcache.interned_strings_buffer "8" PHP_INI_SYSTEM  
opcache.max_accelerated_files "10000" PHP_INI_SYSTEM  
opcache.max_wasted_percentage "5" PHP_INI_SYSTEM  
opcache.use_cwd "1" PHP_INI_SYSTEM  
opcache.validate_timestamps "1" PHP_INI_ALL  
opcache.revalidate_freq "2" PHP_INI_ALL  
opcache.revalidate_path "0" PHP_INI_ALL  
opcache.save_comments "1" PHP_INI_SYSTEM  
opcache.fast_shutdown "0" PHP_INI_SYSTEM  
opcache.enable_file_override "0" PHP_INI_SYSTEM  
opcache.optimization_level "0x7FFEBFFF" PHP_INI_SYSTEM До PHP 7.3.0 было 0x7FFFBFFF
opcache.inherited_hack "1" PHP_INI_SYSTEM Удалено в PHP 7.3.0
opcache.dups_fix "0" PHP_INI_ALL  
opcache.blacklist_filename "" PHP_INI_SYSTEM  
opcache.max_file_size "0" PHP_INI_SYSTEM  
opcache.consistency_checks "0" PHP_INI_ALL  
opcache.force_restart_timeout "180" PHP_INI_SYSTEM  
opcache.error_log "" PHP_INI_SYSTEM  
opcache.log_verbosity_level "1" PHP_INI_SYSTEM  
opcache.preferred_memory_model "" PHP_INI_SYSTEM  
opcache.protect_memory "0" PHP_INI_SYSTEM  
opcache.mmap_base null PHP_INI_SYSTEM  
opcache.restrict_api "" PHP_INI_SYSTEM  
opcache.file_update_protection "2" PHP_INI_ALL  
opcache.huge_code_pages "0" PHP_INI_SYSTEM  
opcache.lockfile_path "/tmp" PHP_INI_SYSTEM  
opcache.opt_debug_level "0" PHP_INI_SYSTEM Доступно с PHP 7.1.0
opcache.file_cache NULL PHP_INI_SYSTEM  
opcache.file_cache_only "0" PHP_INI_SYSTEM  
opcache.file_cache_consistency_checks "1" PHP_INI_SYSTEM  
opcache.file_cache_fallback "1" PHP_INI_SYSTEM  
opcache.validate_permission "0" PHP_INI_SYSTEM Доступно с PHP 7.0.14
opcache.validate_root "0" PHP_INI_SYSTEM Доступно с PHP 7.0.14
opcache.preload "" PHP_INI_SYSTEM Доступно с PHP 7.4.0
opcache.preload_user "" PHP_INI_SYSTEM Доступно с PHP 7.4.0
opcache.cache_id "1" PHP_INI_SYSTEM Только в Windows. Доступно с PHP 7.4.0
opcache.jit "tracing" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_buffer_size "0" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_debug "0" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_bisect_limit "0" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_prof_threshold "0.005" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_max_root_traces "1024" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_max_side_traces "128" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_max_exit_counters "8192" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_hot_loop "64" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_hot_func "127" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_hot_return "8" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_hot_side_exit "8" PHP_INI_SYSTEM Доступно с PHP 8.0.0
opcache.jit_blacklist_root_trace "16" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_blacklist_side_trace "8" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_max_loop_unrolls "8" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_max_recursive_calls "2" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_max_recursive_returns "2" PHP_INI_ALL Доступно с PHP 8.0.0
opcache.jit_max_polymorphic_calls "2" PHP_INI_ALL Доступно с PHP 8.0.0
Для подробного описания констант PHP_INI_*, обратитесь к разделу Где могут быть установлены параметры конфигурации.

Краткое разъяснение конфигурационных директив.

opcache.enable bool

Разрешает кеширование опкодов. Если запрещено, код не будет оптимизироваться и кешироваться. Опцию opcache.enable нельзя включить во время исполнения с помощью ini_set(), но можно выключить. Попытка включить ее таким образом приведет к генерации предупреждения.

opcache.enable_cli bool

Разрешает кеширование опкодов для CLI-версии PHP.

opcache.memory_consumption int

Размер разделяемой памяти в мегабайтах для OPcache. Минимально допустимое значение - "8", которое применяется, если установлено меньшее значение.

opcache.interned_strings_buffer int

Количество памяти в мегабайтах для хранения интернированных строк.

opcache.max_accelerated_files int

Максимальное количество ключей (и, соответственно, скриптов) в хеш-таблице OPcache. Фактическое используемое значение будет первым числом из набора { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }, которое больше или равно заданному в этом параметре. Минимум 200, максимум 100000. Значения за пределами этого диапазона ограничены до допустимого диапазона.

opcache.max_wasted_percentage int

Максимальное значение потерянной памяти (в процентах) после которого планируется перезапуск, если недостаточно свободной памяти. Максимально допустимое значение: "50", которое применяется, если установлено большее значение.

opcache.use_cwd bool

Если включено, OPcache добавляет текущую рабочую директорию к ключу скрипта, тем самым устраняя возможность коллизий для файлов с одинаковым именем. Отключение этой опции повышает производительность, но может привести к сбоям.

opcache.validate_timestamps bool

Если включено, OPcache будет проверять актуальность закешированных скриптов каждые opcache.revalidate_freq секунд. Когда запрещено, вы можете перезапустить OPcache вручную с помощью opcache_reset(), opcache_invalidate() или перезапустив веб-сервер для того, чтобы изменения вступили в силу.

opcache.revalidate_freq int

Как часто в секундах проверять временные метки файлов. 0 приведет к тому, что OPcache будет производить эту проверку при каждом запросе.

Эта директива игнорируется, если выключена opcache.validate_timestamps.

opcache.revalidate_path bool

Если выключено, существующие закешированные файлы, использующие один и тот же include_path, будут повторно использоваться. Таким образом, если файл с тем же именем находится в другом месте в include_path, он не будет найден.

opcache.save_comments bool

Если выключено, все комментарии будут отброшены из кеша опкодов для минимизации размера кода. Отключение этой опции может привести к тому, что некоторые фреймворки, полагающиеся на аннотации в комментариях, перестанут работать, включая Doctrine, Zend Framework 2 и PHPUnit.

opcache.fast_shutdown bool

Если включено, то будет использована быстрая последовательность перезагрузки, при которой не происходит очистки всех выделенных блоков памяти. Вместо этого для освобождения всего набора переменных используется стандартный менеджер памяти Zend Engine.

Эта директива была удалена в PHP 7.2.0. Вариант быстрой последовательности перезагрузки был интегрирован в PHP и автоматически будет использоваться, если это возможно.

opcache.enable_file_override bool

Если включено, то кеш опкодов будет проверять, закеширован ли уже файл при вызове функций file_exists(), is_file() и is_readable(). Это может повысить производительность для приложений, проверяющих присутствие и доступность для чтения скриптом PHP, но несет риск возврата устаревших данных, если запрещена опция opcache.validate_timestamps.

opcache.optimization_level int

Битовая маска, контролирующая, какие шаги оптимизации выполняются.

opcache.inherited_hack bool

Эта директива игнорируется.

opcache.dups_fix bool

Этот хак требуется только для обхода ошибок "Cannot redeclare class".

opcache.blacklist_filename string

Местоположение черного списка OPcache. Файл черного списка содержит имена файлов, которые не нужно ускорять, по одной записи на строку. Допустимы шаблоны поиска и префиксы. Строки, начинающиеся с точки с запятой игнорируются

Пример простого черного списка:

; Указываем конкретный файл.
/var/www/broken.php
; Префикс, обозначающий все файлы, начинающиеся с x.
/var/www/x
; Шаблон поиска.
/var/www/*-broken.php
opcache.max_file_size int

Максимальный размер файла для кеширования в байтах. Если задать 0, то кешироваться будут все файлы.

opcache.consistency_checks int

Если не ноль, OPcache будет сверять контрольную сумму кеша каждые N запросов, где N - заданное в этой директиве значение. Рекомендуется включать только при отладке, так как сильно влияет на производительность.

opcache.force_restart_timeout int

Количество секунд ожидания освобождения кеша, после которого будет принудительно произведен запланированный перезапуск. Если это время превышено, OPcache считает, что происходит что-то неправильное и убивает процесс, блокирующий кеш.

Если параметр opcache.log_verbosity_level задать равным 2 или больше, то, при возникновении подобной ситуации, в лог ошибок будет записано предупреждение.

Директива не поддерживается в Windows.

opcache.error_log string

Лог ошибок OPcache. Пустая строка считается как stderr, и ошибки будут выведены в стандартный поток ошибок (в большинстве случаев это лог ошибок веб-сервера).

opcache.log_verbosity_level int

Уровень подробности лога ошибок. По умолчанию будут записываться только фатальные ошибки (уровень 0) и ошибки (уровень 1). Также значения могут быть следующими: предупреждения (уровень 2), информационные сообщения (уровень 3) и сообщения отладки (уровень 4).

opcache.preferred_memory_model string

Предпочитаемая модель памяти для OPcache. Если оставить пустым, то OPcache самостоятельно выберет наиболее подходящую модель, которая будет вести себя корректно практически в любых случаях.

Возможные значения включают mmap, shm, posix и win32.

opcache.protect_memory bool

Защищает разделяемую память от неожиданной записи во время запуска скриптов. Полезно только для внутренней отладки.

opcache.mmap_base string

Базовое значение для сегмента разделяемой памяти в Windows. Все процессы PHP должны отображать разделяемую память в одинаковое адресное пространство. Данная опция помогает починить ошибки типа "Unable to reattach to base address".

opcache.restrict_api string

Позволяет вызывать функции API OPcache только скриптам, чей путь начинается с указанной строки. Значение по умолчанию "" означает отсутствие ограничений.

opcache.file_update_protection string

Предотвращает кеширование файлов младше указанного количества секунд. Это помогает предотвратить кеширование не до конца обновленных файлов. В случае, если у вас все обновления файлов атомарны, можно повысить производительность, задав этот параметр равным "0".

opcache.huge_code_pages bool

Включает или отключает копирование кода PHP (текстового сегмента) в HUGE PAGES. Это может повысить производительность, но требует соответствующих системных настроек. Доступно в Linux начиная с PHP 7.0.0 и FreeBSD начиная с PHP 7.4.0.

opcache.lockfile_path string

Абсолютный путь к хранилищу общих файлов блокировок (только *nix)

opcache.opt_debug_level string

Производит вывод опкодов для отладки разных этапов оптимизации. 0x10000 приведет к выводу опкодов как только они сгенерированы компилятором, до применения какой-либо оптимизации. 0x20000 приведет к выводу опкодов после оптимизации.

opcache.file_cache string

Разрешает и задает директорию кеша второго уровня. Это должно повысить производительность в случае, если память SHM заполнена, сервер перезапущен или SHM сброшена. Значение по умолчанию "" запрещает кеширование на файловой системе.

opcache.file_cache_only bool

Включает или выключает кеширование опкодов в разделяемой памяти.

opcache.file_cache_consistency_checks bool

Включает или выключает проверку контрольной суммы при загрузке скрипта из файлового кеша.

opcache.file_cache_fallback bool

Применяет opcache.file_cache_only=1 для некоторых процессов, которые завершились ошибкой при переподключении к разделяемой памяти (только для Windows). Требуется явно разрешенное кеширование на файловую систему.

Предостережение

Отключение этой опции конфигурации может помешать запуску процессов, и поэтому не рекомендуется.

opcache.validate_permission bool

Проверяет права доступа к кешированному файлу для текущего пользователя.

opcache.validate_root bool

Предотвращает коллизии имен в chroot-окружении. Должно быть включено для всех случаев использования chroot-окружений для предотвращения доступа к файлам за пределами chroot.

opcache.preload string

Задает скрипт PHP, который будет скомпилирован и запущен при старте сервера и сможет предзагрузить другие файлы, либо с помощью include, либо используя функцию opcache_compile_file(). Все сущности (например функции и классы), определенные в этих файлах, автоматически будут доступны до момента выключения сервера.

Замечание:

Предварительная загрузка не поддерживается в Windows.

opcache.preload_user string

Предварительная загрузка кода с правами root запрещена по соображениям безопасности. Эта директива облегчает запуск предварительной загрузки от имени другого пользователя.

opcache.cache_id string

В Windows все процессы, выполняющие один и тот же PHP SAPI под одной и той же учетной записью пользователя с одинаковым идентификатором кеша, совместно используют один экземпляр OPcache. Значение идентификатора кеша может быть свободно выбрано.

opcache.jit string|int

Для обычного использования параметр принимает одно из четырех строковых значений:

  • disable: Полностью отключен, не может быть включен во время выполнения.
  • off: Отключено, но может быть включено во время выполнения.
  • tracing/on: Используйте трассировку JIT. Включено по умолчанию и рекомендуется для большинства пользователей.
  • function: Используйте функцию JIT.

Для расширенного использования параметр принимает 4-значное целое число CRTO, где цифры означают:

O (уровень оптимизации)
  • 0: Без JIT.
  • 1: Минимальный JIT (вызов стандартных обработчиков виртуальных машин).
  • 2: Встроенные обработчики виртуальных машин.
  • 3: Использовать вывод типа.
  • 4: Использовать график вызовов.
  • 5: Оптимизировать весь скрипт.
T (триггер)
  • 0: Компиляция всех функций при загрузке скрипта.
  • 1: Компиляция функций при первом выполнении.
  • 2: Профилирование функций при первом запросе и затем компилирование самых популярных функций.
  • 3: Профилирование на лету и компиляция горячих функций.
  • 4: В настоящее время не используется.
  • 5: Использование трассировки JIT. Профилирование на лету и компиляция трассировки для горячих сегментов кода.
R (распределение регистров)
  • 0: Не выполнять распределение регистров.
  • 1: Выполнять выделение локального блочного регистра.
  • 2: Выполнять выделение глобального регистра.
C (Флаги оптимизации для процессора)
  • 0: Отключить оптимизацию для ЦП.
  • 1: Включите использование AVX, если ЦП поддерживает его.
Режим "tracing" соответствует CRTO = 1254, Режим "function" соответствует CRTO = 1205.

opcache.jit_buffer_size int

Объем разделяемой памяти, резервируемый для скомпилированного JIT-кода. Нулевое значение отключает JIT.

Если используется int, значение измеряется байтами. Вы также можете использовать сокращенную запись, которая описана в этом разделе FAQ.
opcache.jit_debug int

Битовая маска, определяющая, какой вывод отладки JIT следует включить. Возможные значения смотрите в zend_jit.h.

opcache.jit_bisect_limit int

Опция отладки, отключающая JIT-компиляцию после компиляции определенного количества функций. Может быть полезно для разделения источника неправильной компиляции JIT.

opcache.jit_prof_threshold float

При использовании режима триггера "профилирование функций при первом запросе" этот порог определяет, считается ли функция горячей. Количество вызовов функции, разделенное на количество вызовов всех функций, должно быть выше порогового значения. Например, порог 0,005 означает, что функции, составляющие более 0,5% всех вызовов, будут скомпилированы JIT.

opcache.jit_max_root_traces int

Максимальное количество корневых стеков вызова.

opcache.jit_max_side_traces int

Максимальное количество боковых стеков вызова, которые может иметь корневой стек.

opcache.jit_max_exit_counters int

Максимальное количество счетчиков выхода бокового стека вызова. Это ограничивает общее количество боковых стеков, которые могут быть во всех корневых стеках.

opcache.jit_hot_loop int

Через сколько итераций цикл считается горячим.

opcache.jit_hot_func int

Через сколько вызовов функция считается горячей.

opcache.jit_hot_return int

Через сколько возвратов возврат считается горячим.

opcache.jit_hot_side_exit int

Через сколько выходов боковой стек считается горячим.

opcache.jit_blacklist_root_trace int

Максимальное количество попыток компиляции корневой трассировки, прежде чем она будет занесена в черный список.

opcache.jit_blacklist_side_trace int

Максимальное количество попыток компиляции боковой трассировки до того, как она будет занесена в черный список.

opcache.jit_max_loop_unrolls int

Максимальное количество попыток развернуть цикл в боковой трассировке, пытаясь достичь корневой трассировки и закрыть внешний цикл.

opcache.jit_max_recursive_calls int

Максимальное количество развернутых рекурсивных циклов вызова.

opcache.jit_max_recursive_returns int

Максимальное количество развернутых рекурсивных циклов возврата.

opcache.jit_max_polymorphic_calls int

Максимальное количество попыток встроенных полиморфных (динамических или методических) вызовов. Вызовы выше этого лимита обрабатываются как мегаморфические и не встраиваются.