Поведение этих функций зависит от установок в php.ini.
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
opcache.enable | "1" | PHP_INI_ALL | |
opcache.enable_cli | "0" | PHP_INI_SYSTEM | |
opcache.memory_consumption | "128" | PHP_INI_SYSTEM | До PHP 7.0.0 значение по умолчанию было "64" |
opcache.interned_strings_buffer | "8" | PHP_INI_SYSTEM | До PHP 7.0.0. значение по умолчанию было "4" |
opcache.max_accelerated_files | "10000" | PHP_INI_SYSTEM | До PHP 7.0.0 значение по умолчанию было "2000" |
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.load_comments | "1" | PHP_INI_ALL | Удалено в PHP 7.0.0 |
opcache.fast_shutdown | "0" | PHP_INI_SYSTEM | |
opcache.enable_file_override | "0" | PHP_INI_SYSTEM | |
opcache.optimization_level | "0x7FFFBFFF" | PHP_INI_SYSTEM | До PHP 5.6.18 было 0xFFFFFFFF |
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 | |
opcache.file_cache | NULL | PHP_INI_SYSTEM | Доступно с PHP 7.0.0 |
opcache.file_cache_only | "0" | PHP_INI_SYSTEM | Доступно с PHP 7.0.0 |
opcache.file_cache_consistency_checks | "1" | PHP_INI_SYSTEM | Только в Windows. Доступно с PHP 7.0.0 |
opcache.file_cache_fallback | "1" | PHP_INI_SYSTEM | Доступно с PHP 7.0.0 |
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.enable
boolean
Разрешает кеширование опкодов. Если запрещено, код не будет оптимизироваться и кешироваться. Опцию opcache.enable нельзя включить во время исполнения с помощью ini_set(), но можно выключить. Попытка включить ее таким образом приведет к генерации предупреждения.
opcache.enable_cli
boolean
Разрешает кеширование опкодов для CLI-версии PHP.
opcache.memory_consumption
integer
Размер разделяемой памяти в мегабайтах для OPcache.
opcache.interned_strings_buffer
integer
Количество памяти в мегабайтах для хранения интернированных строк. Игнорируется в PHP < 5.3.0.
opcache.max_accelerated_files
integer
Максимальное количество ключей (и, соответственно, скриптов) в хеш-таблице OPcache. Фактическое используемое значение будет первым числом из набора { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 }, которое больше или равно заданному в этом параметре. Минимум 200, максимум 100000 в PHP < 5.5.6 и 1000000 в более поздних версиях.
opcache.max_wasted_percentage
integer
Максимальное значение потерянной памяти (в процентах) после которого планируется перезапуск.
opcache.use_cwd
boolean
Если включено, OPcache добавляет текущую рабочую директорию к ключу скрипта, тем самым устраняя возможность коллизий для файлов с одинаковым именем. Отключение этой опции повышает производительность, но может привести к сбоям.
opcache.validate_timestamps
boolean
Если включено, OPcache будет проверять актуальность закешированных скриптов каждые opcache.revalidate_freq секунд. Когда запрещено, вы можете перезапустить OPcache вручную с помощью opcache_reset(), opcache_invalidate() или перезапустив веб-сервер для того, чтобы изменения вступили в силу.
opcache.revalidate_freq
integer
Как часто в секундах проверять временные метки файлов. 0 приведет к тому, что OPcache будет производить эту проверку при каждом запросе.
Эта директива игнорируется, если выключена opcache.validate_timestamps.
opcache.revalidate_path
boolean
Если выключено, существующие закешированные файлы, использующие один и тот же include_path, будут повторно использоваться. Таким образом, если файл с тем же именем находится в другом месте в include_path, он не будет найден.
opcache.save_comments
boolean
Если выключено, все комментарии будут отброшены из кеша опкодов для минимизации размера кода. Отключение этой опции может привести к тому, что некоторые фреймворки, полагающиеся на аннотации в комментариях, перестанут работать, включая Doctrine, Zend Framework 2 и PHPUnit.
opcache.load_comments
boolean
Если выключено, комментарии не будут загружаться из кеша опкодов, даже если они там есть. Может использоваться вместе с opcache.save_comments для подгрузки комментариев только для тех приложений, которым они нужны.
opcache.fast_shutdown
boolean
Если включено, то будет использована быстрая последовательность перезагрузки, при которой не происходит очистки всех выделенных блоков памяти. Вместо этого для освобождения всего набора переменных используется стандартный менеджер памяти Zend Engine.
Эта директива была удалена в PHP 7.2.0. Вариант быстрой последовательности перезагрузки был интегрирован в PHP и автоматически будет использоваться, если это возможно.
opcache.enable_file_override
boolean
Если включено, то кеш опкодов будет проверять, закеширован ли уже файл при вызове функций file_exists(), is_file() и is_readable(). Это может повысить производительность для приложений, проверяющих присутствие и доступность для чтения скриптом PHP, но несет риск возврата устаревших данных, если запрещена опция opcache.validate_timestamps.
opcache.optimization_level
integer
Битовая маска, контролирующая, какие шаги оптимизации выполняются.
opcache.inherited_hack
boolean
В PHP < 5.3 OPcache хранит места, где опкод DECLARE_CLASS использует наследование; когда файл загружен, OPcache пытается связать унаследованные классы с использованием текущего окружения. Проблема в том, что опкод DECLARE_CLASS может быть не нужен для текущего скрипта, и если скрипту требуется определение этого опкода, он может не запуститься.
Эта директива игнорируется в PHP 5.3 и выше.
opcache.dups_fix
boolean
Этот хак требуется только для обхода ошибок "Cannot redeclare class".
opcache.blacklist_filename
string
Местоположение черного списка OPcache. Файл черного списка содержит имена файлов, которые не нужно ускорять, по одной записи на строку. Допустимы шаблоны поиска и префиксы. Строки, начинающиеся с точки с запятой игнорируются
Пример простого черного списка:
; Указываем конкретный файл. /var/www/broken.php ; Префикс, обозначающий все файлы, начинающиеся с x. /var/www/x ; Шаблон поиска. /var/www/*-broken.php
opcache.max_file_size
integer
Максимальный размер файла для кеширования в байтах. Если задать 0, то кешироваться будут все файлы.
opcache.consistency_checks
integer
Если не ноль, OPcache будет сверять контрольную сумму кеша каждые N запросов, где N - заданное в этой директиве значение. Рекомендуется включать только при отладке, так как сильно влияет на производительность.
opcache.force_restart_timeout
integer
Количество секунд ожидания освобождения кеша, после которого будет принудительно произведен запланированный перезапуск. Если это время превышено, OPcache считает, что происходит что-то неправильное и убивает процесс, блокирующий кеш.
Если параметр opcache.log_verbosity_level задать равным 2 или больше, то, при возникновении подобной ситуации, в лог ошибок будет записано предупреждение.
opcache.error_log
string
Лог ошибок OPcache. Пустая строка считается как stderr, и ошибки будут выведены в стандартный поток ошибок (в большинстве случаев это лог ошибок веб-сервера).
opcache.log_verbosity_level
integer
Уровень подробности лога ошибок. По умолчанию будут записываться только фатальные ошибки (уровень 0) и ошибки (уровень 1). Также значения могут быть следующими: предупреждения (уровень 2), информационные сообщения (уровень 3) и сообщения отладки (уровень 4).
opcache.preferred_memory_model
string
Предпочитаемая модель памяти для OPcache. Если оставить пустым, то OPcache самостоятельно выберет наиболее подходящую модель, которая будет вести себя корректно практически в любых случаях.
Возможные значения включают mmap, shm, posix и win32.
opcache.protect_memory
boolean
Защищает разделяемую память от неожиданной записи во время запуска скриптов. Полезно только для внутренней отладки.
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
string
Включает или отключает копирование кода PHP (текстового сегмента) в HUGE PAGES. Это может повысить производительность, но требует соответствующих системных настроек.
opcache.lockfile_path
string
Абсолютный путь к хранилищу общих файлов блокировок (только *nix)
opcache.opt_debug_level
string
Производит вывод опкодов для отладки разных этапов оптимизации. 0x10000 приведет к выводу опкодов как только они сгенерированы компилятором, до применения какой-либо оптимизации. 0x20000 приведет к выводу опкодов после оптимизации.
opcache.file_cache
string
Разрешает и задает директорию кеша второго уровня. Это должно повысить производительность в случае, если память SHM заполнена, сервер перезапущен или SHM сброшена. Значение по умолчанию "" запрещает кеширование на файловой системе.
opcache.file_cache_only
boolean
Включает или выключает кеширование опкодов в разделяемой памяти.
opcache.file_cache_consistency_checks
boolean
Включает или выключает проверку контрольной суммы при загрузке скрипта из файлового кеша.
opcache.file_cache_fallback
boolean
Применяет opcache.file_cache_only=1 для некоторых процессов, которые завершились ошибкой при переподключении к разделяемой памяти (только для Windows). Требуется явно разрешенное кеширование на файловую систему.
Отключение этой опции конфигурации может помешать запуску процессов, и поэтому не рекомендуется.
opcache.validate_permission
boolean
Проверяет права доступа к кешированному файлу для текущего пользователя.
opcache.validate_root
boolean
Предотвращает коллизии имен в chroot-окружении. Должно быть включено для всех случаев использования chroot-окружений для предотвращения доступа к файлам за пределами chroot.
opcache.preload
string
Задает скрипт PHP, который будет скомпилирован и запущен при старте сервера и сможет предзагрузить другие файлы, либо с помощью include, либо используя функцию opcache_compile_file(). Все сущности (например функции и классы), определенные в этих файлах, автоматически будут доступны до момента выключения сервера.