PHP: Настройка во время выполнения
Change language: EnglishBrazilian PortugueseChinese (Simplified)FrenchGermanJapaneseRussianSpanishTurkishOther
Submit a Pull Request Report a Bug
Поведение этих функций зависит от установок в php.ini.
Имя | По умолчанию | Место изменения | Список изменений |
---|---|---|---|
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» | ||
opcache. record_warnings | «0» | PHP_INI_SYSTEM | Доступно, начиная с PHP 8.0.0. |
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 | «» | 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. |
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 | 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
Количество памяти в мегабайтах для хранения интернированных строк.
-
opcache.max_accelerated_files
int Максимальное количество ключей (и, соответственно, скриптов) в хеш-таблице OPcache. Фактическое используемое значение будет первым числом из набора
{ 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987, 262237, 524521, 1048793 }
, которое больше или равно заданному в этом параметре. Минимум 200, максимум 1000000. Значения за пределами этого диапазона ограничены до допустимого диапазона.-
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, он не будет найден.
Если выключено, все комментарии будут отброшены из кеша опкодов для минимизации размера кода. Отключение этой опции может привести к тому, что некоторые фреймворки, полагающиеся на аннотации в комментариях, перестанут работать, включая 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.opt_debug_level).
-
opcache.inherited_hack
bool Эта директива игнорируется.
-
opcache.dups_fix
bool Этот хак требуется только для обхода ошибок «Cannot redeclare class».
-
opcache. blacklist_filename
string Местоположение чёрного списка OPcache. Файл чёрного списка содержит имена файлов, которые не нужно ускорять, по одной записи на строку. Допустимы шаблоны поиска и префиксы. Строки, начинающиеся с точки с запятой игнорируются
Пример простого чёрного списка:
-
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.record_warnings
bool Если включено, OPcache запишет предупреждения во время компиляции и воспроизведёт их при следующем включении, даже если оно выполняется из кеша.
-
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 Включает или выключает кеширование опкодов в разделяемой памяти.
Замечание:
До PHP 8.1.0 отключение этой директивы с уже заполненным файловым кешем требовало ручной очистки файлового кеша.
-
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. Значение идентификатора кеша может быть свободно выбрано.
Подсказка
Для IIS разные пулы приложений могут иметь собственный экземпляр OPcache, используя переменную среды APP_POOL_ID как
opcache.cache_id
.-
opcache.jit
string|int Для обычного использования параметр принимает одно из четырёх строковых значений:
disable
: Полностью отключён, не может быть включён во время выполнения.off
: Отключено, но может быть включено во время выполнения.-
tracing
/on
: Используйте трассировку JIT. Включено по умолчанию и рекомендуется для большинства пользователей. function
: Используйте функцию JIT.
Для расширенного использования параметр принимает 4-значное целое число
CRTO
, где цифры означают:-
C
(Флаги оптимизации для процессора) 0
: Отключить оптимизацию для ЦП.1
: Включите использование AVX, если ЦП поддерживает его.
-
R
(распределение регистров) 0
: Не выполнять распределение регистров.1
: Выполнять выделение локального блочного регистра.2
: Выполнять выделение глобального регистра.
-
T
(триггер) 0
: Компиляция всех функций при загрузке скрипта.1
: Компиляция функций при первом выполнении.-
2
: Профилирование функций при первом запросе и затем компилирование самых популярных функций. 3
: Профилирование на лету и компиляция горячих функций.4
: В настоящее время не используется.-
5
: Использование трассировки JIT. Профилирование на лету и компиляция трассировки для горячих сегментов кода.
-
O
(уровень оптимизации) 0
: Без JIT.1
: Минимальный JIT (вызов стандартных обработчиков виртуальных машин).2
: Встроенные обработчики виртуальных машин.3
: Использовать вывод типа.4
: Использовать график вызовов.5
: Оптимизировать весь скрипт.
"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. Примечание: этот параметр работает, только если для триггера JIT установлено значение 0 (компиляция при загрузке скрипта) или 1 (компиляция при первом выполнении), например,
opcache.jit=1215
. Подробнее смотрите в разделе opcache.jit.-
opcache. jit_prof_threshold
float При использовании режима триггера «профилирование функций при первом запросе» этот порог определяет, считается ли функция горячей. Количество вызовов функции, разделённое на количество вызовов всех функций, должно быть выше порогового значения. Например, порог 0,005 означает, что функции, составляющие более 0,5% всех вызовов, будут скомпилированы JIT.
-
opcache.jit_max_root_traces
int Максимальное количество корневых стеков вызова. Корневой стек вызова — это поток выполнения, проходящий по коду сначала по одному пути, что является единицей компиляции JIT. JIT не будет компилировать новый код, если он достигнет этого предела.
-
opcache.jit_max_side_traces
int Максимальное количество боковых стеков вызова, которые может иметь корневой стек. Боковой стек вызова — это другой поток выполнения, который не следует по пути скомпилированного корневого стека вызова. Боковые стеки вызова, принадлежащие одному и тому же корневому стеку вызова, не будут компилироваться, если они достигают этого предела.
-
opcache.jit_max_exit_counters
int Максимальное количество счётчиков выхода бокового стека вызова. Это ограничивает общее количество боковых стеков, которые могут быть во всех корневых стеках.
-
opcache.jit_hot_loop
int Через сколько итераций цикл считается горячим. Допустимый диапазон значений:
[0,255]
; для любого значения вне этого диапазона, например, -1 или 256, будет использоваться значение по умолчанию. В частности, нулевое значение отключит JIT для отслеживания и компиляции любых циклов.-
opcache. jit_hot_func
int Через сколько вызовов функция считается горячей. Допустимый диапазон значений:
[0,255]
; для любого значения вне этого диапазона, например, -1 или 256, будет использоваться значение по умолчанию. В частности, нулевое значение отключит JIT для отслеживания и компиляции любых функций.-
opcache.jit_hot_return
int Через сколько возвратов возврат считается горячим. Допустимый диапазон значений:
[0,255]
; для любого значения вне этого диапазона, например, -1 или 256, будет использоваться значение по умолчанию. В частности, нулевое значение отключит JIT для отслеживания и компиляции любых возвратов.-
opcache.jit_hot_side_exit
int Через сколько выходов боковой стек считается горячим. Допустимый диапазон значений:
[0,255]
; для любого значения вне этого диапазона, например, -1 или 256, будет использоваться значение по умолчанию. В частности, нулевое значение отключит JIT для отслеживания и компиляции любых побочных выходов.-
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 Максимальное количество попыток встроенных полиморфных (динамических или методических) вызовов. Вызовы выше этого лимита обрабатываются как метаморфические и не встраиваются.
+add a note
User Contributed Notes 6 notes
up
down
15
damien at overeem dot org ¶
5 years ago
When this happens, your windows Event log (Windows Logs/Application) will show (probably multiple) entries from Zend OPcache with Event ID 487. Further information will state the following error message: "Base address marks unusable memory region". This issue can be resolved by adding the following to your php.ini: opcache.mmap_base = 0x20000000 Unfortunately I do not know the significance of the value "0x20000000". I can only tell you that this value works to solve the problem (Tried and tested) When using PHP on a windows platform and enabling opcache, you might run into occasional 500 errors. These will appear to show up entirely random.
up
down
9
wessos at example dot org ¶
3 years ago
#define ZEND_OPTIMIZER_PASS_1 (1<<0) /* CSE, STRING construction */ Source: https://lxr. room11.org/xref/php-src%40master/ext/opcache/Optimizer/zend_optimizer.h The optimization levels as of php 7.3 are the following:
#define ZEND_OPTIMIZER_PASS_2 (1<<1) /* Constant conversion and jumps */
#define ZEND_OPTIMIZER_PASS_3 (1<<2) /* ++, +=, series of jumps */
#define ZEND_OPTIMIZER_PASS_4 (1<<3) /* INIT_FCALL_BY_NAME -> DO_FCALL */
#define ZEND_OPTIMIZER_PASS_5 (1<<4) /* CFG based optimization */
#define ZEND_OPTIMIZER_PASS_6 (1<<5) /* DFA based optimization */
#define ZEND_OPTIMIZER_PASS_7 (1<<6) /* CALL GRAPH optimization */
#define ZEND_OPTIMIZER_PASS_8 (1<<7) /* SCCP (constant propagation) */
#define ZEND_OPTIMIZER_PASS_9 (1<<8) /* TMP VAR usage */
#define ZEND_OPTIMIZER_PASS_10 (1<<9) /* NOP removal */
#define ZEND_OPTIMIZER_PASS_11 (1<<10) /* Merge equal constants */
#define ZEND_OPTIMIZER_PASS_12 (1<<11) /* Adjust used stack */
#define ZEND_OPTIMIZER_PASS_13 (1<<12) /* Remove unused variables */
#define ZEND_OPTIMIZER_PASS_14 (1<<13) /* DCE (dead code elimination) */
#define ZEND_OPTIMIZER_PASS_15 (1<<14) /* (unsafe) Collect constants */
#define ZEND_OPTIMIZER_PASS_16 (1<<15) /* Inline functions */
up
down
6
tizian dot schmidlin at gmail dot com ¶
3 years ago
That means, that hosting multiple websites on the same server might result in some unexpected behaviour. Concrete example: This is avoidable by simply not preloading user space classes or, if you work with FPM, by defining a pool for each app. In order to optimize memory consumption, you might also use a common FPM Pool for all Symfony 3.4 Apps and preload the entire framework in there and simply not preload user space classes (which might be cached by opcache anyway but is slower, since it will be checked if the file has changed on every request). It should be noted that according to the original RFC (https://wiki.php.net/rfc/preload) `opcache.preload` caches preloaded files *forever* for all instances of the underlying PHP process.
- you have a Symfony 3.2 App (which might be an endpoint of some type) and a Symfony 3.4 App (which might be your main application)
- both apps have a main Class called App that is in the same namespace (as it is usual, since the class name is unique to each project)
- depending on which app is loaded first, one or the other will work, since `opcache.preload` has no file based distinction of what class is used where and simply provides them to the user space
up
down
4
carneiro at isharelife dot com dot br ¶
2 years ago
If you try to allocate more memory that is available using opcache.memory_consumption PHP stops working without any logs to help on debugging. This issue took me 4 hours to solve when creating a staging server with same configrations and less memory that was available on production server.
up
down
4
bdurand at ensemblegroup dot net ¶
5 years ago
It would appear as though the [opcache. enable] setting is indeed NOT PHP_INI_ALL.
For changing it within user.ini yields no effect when disabled at global level. user.ini is ignored for that setting.
up
down
-18
BR ¶
6 years ago
opcache.max_wasted_percentage must have a value between 1 and 50. Otherwise it will automatically set the variable 5 %.
+add a note
Используем OPCache для повышения производительности PHP на веб сервере
Zend Opcache – это расширение PHP, предназначенное для повышения производительности PHP, сокращения времени загрузки веб-страниц и уменьшения нагрузки на сервере.
Производительность достигается путем компиляции кода PHP файлов при первом обращении к ним. В результате при следующем доступе сервер не тратит ресурсы на повторное чтение и компиляцию php файла, а отдает готовый результат из кэша opcache. Т.е. opcache дает хорошие результаты для cms/файлов php скриптов, код которых редко изменяется.
В данной статье мы рассмотрим установку расширения OPcache, его настройку и использование с веб-сервером apache на примере Linux CentOS.
Содержание:
- Установка расширения OPcache
- Настройка параметров OPcache в конфигурационном файле
- Сравнение производительности популярных CMS при использовании OPcache
Установка расширения OPcache
Перед установкой самого расширения, нужно подключить репозитории EPEL и remi, а затем обновить пакеты на сервере с помощью yum (dnf):
# dnf install epel-release -y
# dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
# dnf update -y
Теперь можно установить opcahce для php:
# dnf install php-opcache -y
На этом установка расширения OPcache завершена.
Настройка параметров OPcache в конфигурационном файле
Конфигурационный файл OPCache находится в директории /etc/php. d. Откройте его и очистите от стандартных записей:
# nano /etc/php.d/10-opcache.ini
Добавьте следующие универсальные настройки, которые подходят для большинства php проектов:
zend_extension=opcache.so opcache.enable=1 opcache.memory_consumption=512 opcache.interned_strings_buffer=512 opcache.max_accelerated_files=100000 opcache.max_wasted_percentage=1 opcache.validate_timestamps=1 opcache.revalidate_freq=0 opcache.fast_shutdown=1 opcache.save_comments=1 opcache.load_comments=1 opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
После сохранения файла php.d перезапустите веб-сервера. В моем случае это apache:
# service httpd restart
Проверьт, что модуль Zend OPcache Engine подключён:
# php -v
Модуль успешно подключен. Рассмотрим опции, которые мы исопльзовали в конфигурационном файле:
-
zend_extension=opcache. so
– подключение модуля расширения -
opcache.enable=1
— включение/отключение OPcache -
opcache.memory_consumption=512
– размер памяти для хранения кэша -
opcache.interned_strings_buffer=512
— размер памяти для пула строк -
opcache.max_accelerated_files=100000
— максимальное количество ключей в хэн-таблице OPcache -
opcache.max_wasted_percentage=1
– максимальный процент потерянной памяти, после которой планируется перезапуск -
opcache.validate_timestamps=1
— включение возможности обнуления вручную или рестартом веб-сервера(регулируется opcache.validate_timestamps) -
opcache.revalidate_freq=0
— промежуток, через который будет выполнена проверка изменения временных меток, для поддержания актуальности данных, 0 — постоянная проверка, любое другое значение количество секунд -
opcache.fast_shutdown=1
— если параметр включен, то будет использована быстрая последовательность перезагрузки, при которой не происходит очистки всех выделенных блоков памяти. -
opcache.save_comments=1
— если выключено, все комментарии будут отброшены из кеша опкодов для минимизации размера кода. -
opcache.load_comments=1
— если выключено, то комментарии PHPDoc не будут загружаться из общей памяти. -
opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
— местоположение списка php файлов, который OPcache должен пропускать. Файл содержит имена файлов, которые не нужно оптимизировать, по одной записи на строку. Допустимы шаблоны поиска и префиксы. Строки, начинающиеся с точки с запятой игнорируются
Более детальную настройку можно выполнить согласно официальной документации по OPcache.
Сравнение производительности популярных CMS при использовании OPcache
Использование OPcache на сервере обеспечит экономию ресурсов и сократит время загрузки страниц сайта, но есть и другие факторы по которым важно использовать данное расширение:
- Многие поисковые системы отдают предпочтение сайтам, с более быстрой загрузкой;
- Быстрый отклик сайта сокращает число отказов. Посетители сайта охотнее задерживаются на таких сайтах;
- Увеличение конверсии, за счет высокой производительности сервера;
- Сокращение расходом на оборудование (из-за экономии ресурсов сервера).
В работе с различными CMS, мы заметили, что почти с любым сайтом, можно добиться хорошего результата в производительности: Использование памяти и время загрузки популярных CMS сокращается в 2-3 раза.
А если речь идет о CMS Bitrix, то ее разработчики настоятельно рекомендуют подключение данного расширения и при замерах производительности, тест сразу показывает, подключен у вас OPcache или нет.
Экспериментируйте с настройками Opcache, уменьшая или увеличивая различные параметры, выполните тонкую настройку для своего сайта исходя из ресурсов сервера, тем самым вы добьетесь отличных результатов в производительности. Модуль Opcache также можно использовать в связке NGINX + PHP-FPM.
Настройка PHP OPcache для оптимизация работы сайта
Опубликовано
Zend OPcache — PHP-акселератор, обеспечивает ускорение выполнения PHP кода благодаря кэшированию и оптимизации, сохраняет скомпилированный байт-код в разделяемой памяти.
OPcache включен по умолчанию начиная с PHP 5.5
Создадим файл конфигурации OPcache:
echo > /etc/php.d/10-opcache.ini
и добавим в него конфиг (пример конфигурации)
opcache.enable=1 opcache.memory_consumption=512 opcache.interned_strings_buffer=32 opcache.max_accelerated_files=130987 opcache.max_wasted_percentage=5 opcache.use_cwd=1 opcache.validate_timestamps=1 opcache.revalidate_path=1 opcache.enable_file_override=1 opcache.fast_shutdown=1 opcache.save_comments=1 opcache.load_comments=1
После чего необходимо перезапустить веб сервер, в данном случае apache
service httpd restart
Включить JIT в PHP 8
Компилятор JIT (Just In Time) в PHP 8 реализован как часть расширения Opcache и призван компилировать операционный код в инструкции процессора в реальном времени. Что позволяет еще больше повысить производительность.
Для включения необходимо указать размер буфера opcache.jit_buffer_size, по умолчанию 0.
Добовляем в наш файл /etc/php.d/10-opcache.ini строку:
opcache.jit_buffer_size=128M
и перезапускаем веб сервер, это все что требуется.
Опции OPcache
Опция | По молчанию | Описание |
opcache.enable | 1 | включение/выключение OPcache |
opcache.enable_cli | 0 | включение OPcache при вызове PHP из командной строки |
opcache.memory_consumption | 64 | размер используемой памяти (в мб.) для хранения прекомпилированного PHP-кода |
opcache.interned_strings_buffer | 4 | количество памяти для пула строк в мегабайтах |
opcache.max_accelerated_files | 2000 | максимальное количество ключей в хэш-таблице OPcache, допустимы значения между 200 и 1000000 |
opcache. max_wasted_percentage | 5 | максимальный процент замусоренной памяти для запланированного перезапуска |
opcache.use_cwd | 1 | при включении добавляет текущую рабочую директорию в ключ скрипта для предотвращения возникновения колизий между файлами с одинаковым именем |
opcache.validate_timestamps | 1 | возможность обнуления OPcache вручную или перезапуском веб-сервера для того, чтобы привести в актуальное состояние данных об изменениях в файлах |
opcache.revalidate_freq | 2 | через какой промежуток времени (в секундах) проверять изменения временных меток для поддержания данных в памяти в актуальном состоянии, где 1 — проверка с периодичностью раз в секунду, 0 — постоянная проверка. |
opcache.file_update_protection | 2 | предотвращает кэширование файлов, которые были изменены меньше, чем в указанное время (в секундах) |
opcache. revalidate_path | включение или отключение оптимизации поиска файлов в include_path | |
opcache.save_comments | 1 | если выключено, все комментарии PHPDoc будут удалены из кода с целью уменьшения размера оптимизированного кода. |
opcache.load_comments | 1 | если выключено, то комментарии PHPDoc не будут загружаться из общей памяти |
opcache.fast_shutdown | 0 | если включено, будет использоваться последовательность быстрых выключений для оптимизированного кода |
opcache.enable_file_override | 0 | при включении OPcache будет проверять наличие закэшированного файла при вызовах file_exists(), is_file() и is_readable() |
opcache.optimization_level | 0xffffffff | битовая маска, в которой каждый бит включает или отключает в соответствующие проходы OPcache |
opcache. inherited_hack | 1 | включение этого хака при ошибках вида can’t redeclare class |
opcache.dups_fix | 0 | Необходимо включить при появлении ошибок вида Can’t redeclare class |
opcache.blacklist_filename | месторасположение списка файлов, к которым запрещен доступ для OPcache | |
opcache.max_file_size | 0 | указывает максимальный размер файла для кеширования, позволяет исключать большие файлы |
opcache.consistency_checks | 0 | проверять контрольную сумму кэша каждое N-ое количество запросов, подсчет контрольной суммы снижает производительность |
opcache.force_restart_timeout | 180 | время ожидания (в секундах) перед перезагрузкой в случае недоступности кэша |
opcache.error_log | определение названия и местоположения лога ошибок OPcache | |
opcache. log_verbosity_level | 1 | все ошибки OPcache отправляет в лог-файл веб-сервера. По умолчанию логируются только критические ошибки (0) и обычные ошибки (1). Дополнительно можно включить предупреждения (2), информационные сообщения (3) или отладочную информацию (4). |
opcache.preferred_memory_model | предпочитаемая модель общей памяти | |
opcache.protect_memory | 0 | защита общей памяти от несанкционированной записи во время выполнения |
opcache.restrict_api | разрешение вызова API-функций OPcache из PHP-скриптов | |
opcache.jit_buffer_size | 0 | Объем разделяемой памяти, резервируемый для скомпилированного JIT-кода |
opcache.jit | tracing | Степерь оптимизации
|
CLI OPcache PHP
Что такое OPcache и как его использовать?
Вы можете ускорить свой сайт WordPress примерно в три или более раз с помощью системы кэширования OPcode PHP OPcache.
OPcache — это тип системы кэширования, которая сохраняет предварительно скомпилированный байт-код сценария в памяти сервера, называемой кешем, поэтому каждый раз, когда пользователь посещает веб-страницу, она загружается быстрее.
Вот более подробная информация об OPcache и о том, как установить его для вашего сайта WordPress, чтобы ускорить его работу.
Что такое кэширование?
Кэширование — это система, которую вы можете внедрить для ускорения работы вашего сайта. Он работает, сохраняя контент в памяти вашего сервера при первой загрузке на веб-страницу. При каждой последующей загрузке страницы сохраненное содержимое извлекается из памяти и обслуживается на странице.
Этот процесс означает, что кешированный контент отображается намного быстрее, чем если бы он загружался непосредственно с сервера.
Это похоже на заучивание таблицы умножения. Как только вы его запомните, гораздо быстрее будет повторять ответ на задачу на умножение по памяти, чем пытаться вычислить ответ снова и снова.
Кэш работает аналогичным образом. Контент хранится в памяти сервера, поэтому его можно быстро загрузить оттуда, вместо того, чтобы идти на сервер, чтобы загрузить контент, что занимает больше времени.
В результате веб-сайт WordPress загружается быстрее.
Существуют также различные типы кэширования, такие как кэширование браузера, сайта, объекта и OPcode. Рекомендуется реализовать более одного типа, чтобы повысить производительность вашего сайта.
Для получения дополнительной информации вы также можете проверить эти ресурсы:
- Кэширование для WordPress, объяснение простым языком
- Кэш браузера и файлы cookie: в чем разница?
- Что такое кэширование объектов и как его использовать с WordPress
Что такое OPcache или кэширование кода операции PHP?
OPcache — это тип кэширования OPcode . Этот тип кэширования компилирует удобочитаемый PHP-код в код, понятный вашему серверу, который называется кодом операции. Это происходит, когда файл PHP загружается на веб-страницу в первый раз. Затем он сохраняется в памяти сервера для более быстрой загрузки при каждом последующем посещении страницы.
Механизмы кэширования байт-кода, такие как OPcache, APC и Xcache, завершают этот процесс при первом выполнении файла PHP без необходимости выполнять его во второй или третий раз.
Как работает кэширование кода операции PHP
При выполнении скрипта PHP выполняется проверка кэш-памяти вашего сервера на предмет того, был ли скрипт уже кэширован. Если это не так, он анализируется, что означает, что код анализируется.
Затем скрипт компилируется в код операции, что делает файл доступным для чтения сервером. После этого код операции сохраняется в памяти сервера.
Другими словами, он хранится в кеше вашего сервера. В следующий раз, когда посетитель загружает страницу с PHP-скриптом, кешированный код выполняется и загружается намного быстрее.
С другой стороны, если скрипт загружается на страницу, а кеш проверяется на наличие кода операции и находит его, то он загружается с разделением по времени.
Когда PHP-скрипты не находятся в кеше, они кэшируются для последующих загрузок страниц.Различия между кэшами OPcache и APC
OPcache, APC и Xcache — это системы кэширования кодов операций. Раньше OPcache принадлежал Zend, а Alternative PHP Cache (APC) был бесплатным расширением с открытым исходным кодом для PHP. Xcache также был альтернативным вариантом.
APC широко использовался, но у него не было такой поддержки, как у OPcache, поэтому его можно было поддерживать и обеспечивать стабильность с каждым новым выпуском PHP.
К счастью, Zend сделал исходный код OPcache открытым и доступным в качестве расширения, начиная с версии PHP 5.5. В более ранних версиях у вас есть возможность использовать APC или OPcache, но если вы хотите использовать последний, вам необходимо установить его вручную.
Xcache, с другой стороны, является хорошей альтернативой OPcache в качестве ускорителя PHP.
Ускорит ли OPcache мой сайт WordPress?
Все три варианта подходят для WordPress, но рекомендуемый вариант для PHP версии 5.5 и выше — OPcache. В среднем это ускоряет WordPress в три раза, по крайней мере, для средних и крупных сайтов.
Если у вас небольшой сайт без множества дополнительных PHP-скриптов или плагинов, вы, скорее всего, не заметите большой разницы.
Тем не менее, вы все равно можете установить OPcache даже на небольшие сайты WordPress без каких-либо негативных последствий, кроме небольшого увеличения использования памяти. Но этого будет недостаточно, чтобы вызвать какие-либо проблемы. Это аналогично для средних, крупных или корпоративных сайтов.
Как установить OPcache на ваш сервер
Если у вас PHP версии 5.5 и выше , кэширование кода операции OPcache PHP установлено и включено по умолчанию. Вам не нужно делать ничего другого. Также нет никаких дополнительных требований или конфигураций, необходимых для его запуска.
Вот почему вы не найдете никаких вариантов, если будете их искать.
Подробнее см. в статье Почему вам нужно обновиться до PHP 7+ как можно скорее. (и как это сделать прямо сейчас)
Согласно руководству по PHP:
«OPcache может быть скомпилирован только как общее расширение. Если вы отключили сборку расширений по умолчанию с помощью –disable-all , вы должны скомпилировать PHP с параметром –enable-opcache , чтобы OPcache был доступен.
После компиляции вы можете использовать директиву конфигурации zend_extension для загрузки расширения кэширования кода операции PHP OPcache в PHP. Это можно сделать с помощью zend_extension=/full/path/to/opcache.so на платформах, отличных от Windows, и zend_extension=C:\path\to\php_opcache.dll в Windows».
После этого перезапустите PHP с помощью SSH.
В Apache введите команду ниже, чтобы перезапустить PHP.
Для Nginx введите следующее:
Как установить OPcache в более ранних версиях
Если ваш сервер работает на PHP версий 5.2, 5.3 или 5.4, вы можете вручную установить OPcache с помощью команды PECL ниже:
Далее перейдите вам php.ini файл:
Вам необходимо обновить файл php.ini со следующими рекомендуемыми настройками:
Вы часто можете найти файл php.ini в системе файловых папок вашего сайта. Если вы не знаете, как его найти, обратитесь к своему хостинг-провайдеру.
Подведение итогов
У многих владельцев сайтов WordPress может быть уже установлена последняя версия PHP. Это означает, что они уже автоматически включили OPcache, чтобы значительно ускорить загрузку страниц своего сайта.
Для тех, у кого установлена версия PHP с 5.2 по 5.4, вы можете вручную установить OPcache, выполнив действия, описанные выше.
У вас установлена последняя версия PHP? У вас есть вопросы о кэшировании кода операции OPcache/PHP? Дайте нам знать в комментариях ниже.
Что такое OPcache и как его установить?
OPcache — это форма системы кэширования, которая кэширует предварительно скомпилированный байт-код скрипта в памяти сервера, позволяя веб-странице загружаться быстрее каждый раз, когда пользователь обращается к ней. С помощью системы кэширования OPcode PHP OPcache вы можете ускорить свой сайт в три раза.
В этой статье мы обсудим, что такое OPcache и как его использовать для ускорения вашего сайта.
Вот как это делается:
- Что такое кэширование?
- Что такое OPcache?
- Почему OPcache?
- Как работает OPcache?
- Как узнать, кэширует ли OPCache файлы?
- Как использовать PHP OPCache?
- OPcache и кэши APC
- Установка OPcache на ваш сервер
Что такое кэширование?
Кэширование — это система, которую вы можете использовать для ускорения загрузки вашего веб-сайта. Он работает, сохраняя контент в памяти вашего сервера при первой его загрузке на веб-страницу. Сохраненный контент восстанавливается из памяти и используется при последующих загрузках страницы.
Из-за этого кэшированное содержимое загружается намного быстрее, чем содержимое, загружаемое непосредственно с сервера.
Это то же самое, что выучить наизусть таблицу умножения. Гораздо быстрее повторить ответ на задачу на умножение по памяти после того, как вы его запомнили, чем пытаться вычислить ответ снова, как только вы его запомнили.
Кэш работает аналогично. Содержимое сохраняется в памяти сервера, чтобы его можно было быстро загрузить, вместо того, чтобы проходить весь путь до сервера, что занимает больше времени.
В результате ваш сайт будет загружаться быстрее.
Что такое OPcache?
OPcache — это кэш кода операции, который использует общую память для хранения предварительно скомпилированного байт-кода сценария PHP для более быстрого выполнения. OPcache ускорит службы на основе PHP, сэкономив ваше время при создании скрипта.
OPcache включен в PHP 5.5, а также доступен в более новых версиях. Чтобы вручную включить OPcache в более ранних версиях PHP, таких как PHP 5.4, 5.3 и 5.2, вы должны сначала установить pecl расширение.
Согласно веб-сайту php.net:
OPcache повышает производительность PHP, сохраняя предварительно скомпилированный байт-код скрипта в разделяемой памяти, тем самым избавляя PHP от необходимости загружать и анализировать скрипты при каждом запросе.
После завершения компиляции кода PHP человекочитаемый код переводится на машинный язык, а компиляция всех скриптов требует времени. В результате, если вы делаете запрос каждый раз и цикл продолжается, ваше приложение будет испытывать множество проблем с производительностью.
Однако, если PHP OPcache включен, процесс будет выполняться только один раз, кэшируя все сценарии и время компиляции. Только обновления будут компилироваться и продолжать сохранять скрипты, которые будут храниться в памяти.
Это может дать вам огромный прирост производительности и значительно сократить время, необходимое для загрузки вашего приложения. С другой стороны, OPcache PHP7 по умолчанию использует 64 МБ памяти.
Почему OPcache?
OpCache — это расширение PHP, которое значительно повышает производительность веб-сайтов на основе PHP при развертывании. OpCache сразу готов к использованию (по умолчанию после установки). Сокращая время, необходимое для компиляции кода, OPcache может помочь вам повысить скорость.
Прочтите, как ускорить сайт WordPress.
При первой компиляции кода PHP он сохраняется в памяти сервера. Вместо того, чтобы ждать компиляции кода, предварительно скомпилированная версия используется каждый раз при вызове кода, вызывая задержку при каждом вызове кода и повышая производительность веб-сайта.
Рассмотрим следующий сценарий: у вас есть небольшой веб-сайт со средней посещаемостью 500-5000 посетителей в день. Количество одновременных пользователей также ограничено, от 5 до 10 в день. В этом случае не будет больших проблем с производительностью, и пользователи будут отлично развлечены.
Представьте себе веб-сайт или приложение, которое принимает сотни тысяч посетителей в секунду и имеет тысячи одновременных пользователей. PHP7 OPcache может предоставить вам идеальное снижение производительности, поскольку достаточно всего нескольких шагов настройки, чтобы увидеть значительные преимущества в скорости и производительности.
Еще одна вещь, которую следует иметь в виду, это то, что один OPcache не сможет справиться со всем; настройки и конфигурация вашего сервера также будут играть роль. Однако в этом сценарии ваша структура кодирования также имеет решающее значение.
Пока OPcache отключен, сервер Digitalocean с 1 ГБ ОЗУ и 1 ЦП может обрабатывать 10 запросов в секунду. Разрешив его, количество запросов в секунду увеличится до 34 и более. Вы также можете улучшить его, чтобы повысить производительность приложения.
Как работает OPcache?
Всякий раз, когда запрашивается PHP-скрипт, он анализируется и компилируется в код операции, который затем выполняется Zend Engine. Это то, что позволяет разработчикам PHP избежать этапа компиляции, который требуется для других языков, таких как Java или C#, — вы можете вносить изменения в свой PHP-код и сразу же видеть результаты.
С другой стороны, этапы синтаксического анализа и компиляции замедляют время отклика и, как правило, не нужны в среде, не связанной с разработкой, поскольку код вашего приложения изменяется нечасто.
После интерпретации и преобразования PHP-скрипта в код операции код операции сохраняется в общей памяти, а последующие запросы пропускают этапы синтаксического анализа и компиляции и используют код операции, хранящийся в памяти, что сокращает время выполнения PHP.
Блок-схема ниже поможет вам понять, как OpCache работает на веб-сайте PHP.
Как узнать, кэширует ли OPCache файлы?
Если вы уже установили и настроили OpCache, вы можете отслеживать, какие файлы PHP кэшируются. Весь механизм кэширования работает в фоновом режиме, невидимый для посетителей и разработчиков веб-сайта.
Вы можете использовать одну из двух функций, которые предлагают эту информацию, чтобы проверить ее статус:
- opcache_get_configuration()
- opcache_get_status()
К счастью, существует несколько сценариев, которые загружают все данные конфигурации и состояния OpCache и отображают их в дружественной форме. Вам не нужно писать код; просто выберите один из инструментов, перечисленных ниже:
- Панель управления Opcache
- статус opcache Расмуса Лердорфа
- opcache-gui Эндрю Коллингтона
- OpCacheGUI Питера Хордейка
В некоторых проектах мы используем сценарий opcache-gui , который включает в себя все необходимые функции. Просто посмотрите на проценты на вкладке «Обзор» веб-сайта opcache-gui , чтобы убедиться, что механизм кэширования работает правильно.
Если показатели использования памяти и частоты обращений больше нуля, OpCache кэширует код PHP и обрабатывает запросы, используя кэшированные файлы. Перейдите на вкладку «Использование файлов», чтобы получить список конкретных кэшированных файлов PHP. Проверьте список файлов, чтобы узнать, были ли файлы в ваших проектах кэшированы.
Прочтите, как войти в консоль в PHP и зачем это делать.
Как использовать PHP OPCache?
OPCache используется для повышения эффективности PHP за счет хранения предварительно скомпилированного байт-кода и, следовательно, устранения необходимости загружать и анализировать сценарии PHP при каждом запросе.
Для использования по назначению требуются такие пакеты, как Zend OPCache. Версии PHP 5.2, 5.3 и 5.4 включены в пакет zendOPCache. Этот модуль используется для удовлетворения основных потребностей кэширования кода операции и, следовательно, оптимизации.
Это повысит эффективность PHP за счет хранения предварительно скомпилированного байт-кода в общей памяти, избавляя от необходимости извлекать код с диска и компилировать его для будущего использования.
Для загрузки пакета ZendOPCache (прямые ссылки для скачивания):
- Zend OPCacheV 7.0.1
- Zend OPCache V 7.0.2
- Zend OPCache V 7.0.3
- Zend OPCache V 7.0.4
- Zend OPCache V 7.0.5
Функции OPCache:
1. Функция opcache_compile_file()
Эта функция создает PHP-скрипт и кэширует его, не запуская.
Синтаксис:
bool opcache_compile_file( $file )
Эта функция компилирует PHP-скрипт и добавляет его в кэш кода операции, не запуская его; его можно использовать для заполнения кеша после перезапуска веб-сервера путем предварительного кэширования файлов, которые будут использоваться в последующих запросах.
В качестве аргумента используется $file . Это расположение PHP-скрипта, который необходимо скомпилировать. Если файл был успешно скомпилирован, приведенное выше описание возвращает значение true; в противном случае возвращается ложь.
2. Функция opcache_get_configuration()
Эта функция используется для получения информации о конфигурации кэша.
Синтаксис:
array opcache_get_configuration( void )
Эта функция возвращает данные конфигурации экземпляра кэша, а также массив информации, включающий файл ini .
3. Функция opcache_get_status()
Эта функция используется для получения информации о состоянии кэша.
Синтаксис:
array opcache_get_status( $get_scripts = TRUE )
Эта функция возвращает информацию о состоянии экземпляра кэша, а параметр $get_scripts содержит информацию о состоянии, специфичную для скрипта.
4. Функция opcache_invalidate()
Эта функция используется для аннулирования кэшированного сценария.
Синтаксис:
bool opcache_invalidate($script, $force = FALSE)
Эта функция очищает кэш кода операции указанного скрипта. Если force не установлено или FALSE, сценарий будет признан недействительным только в том случае, если время модификации сценария новее, чем кэшированные коды операций.
Параметр $script указывает путь к скрипту, который становится недействительным. Если для аргумента $force установлено значение TRUE, сценарий будет признан недействительным независимо от того, требуется ли недействительность.
5. Функция opcache_is_script_cached()
Он сообщит вам, был ли скрипт кэширован в OPCache.
Синтаксис:
bool opcache_is_script_cached( $file )
Эта функция определяет, был ли скрипт PHP кэширован с использованием OPCache. Это можно использовать для более легкого обнаружения «предупреждения» кеша для определенного скрипта. Параметр $file указывает расположение проверяемого PHP-скрипта.
6. Функция opcache_reset()
С помощью этой функции сбрасывается содержимое кэша кода операции.
Синтаксис:
bool opcache_reset(void)
Эта функция полностью очищает кэш кода операции. Все скрипты будут перезагружены и повторно обработаны при следующем попадании в них после выполнения opcache_reset() .
OPcache и кэши APC
Системы кэширования кодов операций включают OPcache, APC и Xcache. Альтернативный кэш PHP (APC) был бесплатным расширением с открытым исходным кодом для PHP, которое когда-то принадлежало Zend. Другим решением было использование Xcache.
APC широко использовался, но ему не хватало поддержки, которую имел OPcache, что усложняло его обслуживание и стабильность с каждым новым выпуском PHP.
Начиная с версии PHP 5.5, Zend сделал исходный код OPcache открытым и доступным в качестве расширения. В более ранних версиях можно было использовать APC или OPcache; но, если вы хотите использовать последний, вы должны установить его вручную.
Xcache, с другой стороны, является надежным ускорителем PHP, альтернативным OPcache.
Нужны ли нам и APC, и OPcache?
Нет. Установка APC не является обязательной, если на ваших серверах включен PHP OPcache. APC — это система кэширования, которая была включена в предыдущие версии PHP, но не работает с PHP 5.5 или более новыми версиями, такими как PHP 7.x. Вы должны перейти с APC на OPcache, и если вы попытаетесь использовать его принудительно, у вас могут возникнуть проблемы.
В PHP 5.5 и более поздних версиях APC (или любое другое расширение для кэширования байт-кода, например XCache) больше не требуется. OPcache напрямую интегрирован в сердце программного обеспечения разработчиками PHP. Это не только повышает общую стабильность продукта, но и официально одобрено разработчиками PHP, что подразумевает наличие большого рабочего сообщества.
Установка OPcache на ваш сервер
OPcache Кэширование кода операции PHP установлено и активировано по умолчанию, если у вас PHP версии 5.5 или выше. Вам больше ничего не нужно делать. Он также не требует каких-либо дополнительных настроек или требований для запуска.
Вот почему, если вы будете искать альтернативы, вы их не найдете.
Согласно руководству по PHP:
OPcache может быть скомпилирован только как общее расширение. Если вы отключили сборку расширений по умолчанию с помощью —disable-all, вы должны скомпилировать PHP с параметром —enable-opcache, чтобы OPcache был доступен.
После компиляции вы можете использовать директиву конфигурации zend_extension для загрузки расширения OPcache в PHP. Это можно сделать с помощью zend_extension=/full/path/to/opcache.so на платформах, отличных от Windows, и zend_extension=C:\path\to\php_opcache.dll на Windows.
Чтобы перезапустить PHP на Apache, выполните приведенную ниже команду.
apache2ctl restart
Введите следующее для Nginx:
service nginx restart
Установка OPcache в более старых версиях
Если на вашем сервере работает PHP версий 5.2, 5.3 или 5.4, выполните следующую команду PECL, чтобы вручную установить OPcache:
pecl install zendopcache-beta
После этого перейдите к файлу php. ini и выполните следующие действия. изменения:
pecl config-get php_ini
Вам необходимо изменить следующие рекомендуемые значения в файле php.ini :
opcache.memory_consumment=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1
Ваш файл php.ini обычно находится в файловой системе папок вашей системы. Свяжитесь с вашим хостинг-провайдером, если вы не знаете, где искать.
Таким образом, кэширование кодов операций — это быстрое решение для уменьшения задержки приложений PHP, и его всегда следует включать в рабочих средах PHP. Уменьшение времени ответа будет в первую очередь определяться двумя факторами:
- Количество времени, проведенное запросом в PHP. Если ваше приложение тратит много времени на ожидание результатов от базы данных или полагается на медленные сторонние веб-сервисы, кэширование кода операции приведет к более медленному времени отклика.
- По сравнению с использованием фреймворка сокращение времени отклика будет ограничено, если ваши PHP-скрипты очень просты и включают только минимальный код для обработки запроса. Обновите PHP до версии 5.5 или установите Zend OpCache прямо сейчас, чтобы приступить к работе.
Ататус: Мониторинг производительности PHP и управление журналами
Atatus — это решение для управления производительностью приложений (APM), которое собирает все запросы к вашим PHP-приложениям, не требуя от вас изменения исходного кода. Однако инструмент делает больше, чем просто отслеживает производительность вашего приложения. Он отслеживает журналы всех ваших PHP-приложений и систем в централизованном и удобном пользовательском интерфейсе, что позволяет быстрее устранять неполадки.
Мы предоставляем экономически эффективный, масштабируемый метод централизованного ведения журналов PHP, чтобы вы могли получить полное представление о своей сложной архитектуре. Чтобы избавиться от шума и сосредоточиться на важных ключевых событиях, вы можете выполнять поиск в журналах по имени хоста, службе, источнику, сообщениям и т. д. Когда вы можете сопоставить события журнала с АРМ медленные следы и ошибки, устранение неполадок становится легким.
Попробуйте 14-дневную бесплатную пробную версию Atatus.
Ускорьте работу сайтов с помощью PHP 7 + OPcache
PHP 7 ускоряет работу многих динамических веб-сайтов более чем на 100 % по сравнению с PHP 5.6 благодаря кэшированию OpCode и оптимизированному движку Zend.
Более высокая скорость страницы приводит к более быстрой загрузке страницы и улучшению пользовательского интерфейса для посетителей вашего веб-сайта. В то же время улучшенная скорость является важным фактором для ранжирования вашего сайта в Google.
Содержание
- Повышение скорости в PHP 7
- Как работает кэширование OpCode
- Подготовка к переходу на PHP 7
- Включить OPcache через php. ini
- Создание каталога онлайн-хранилища для кэша
- Войти в онлайн-хранилище через SFTP
- Сохранить абсолютный путь в php.ini
- Настроить php.ini
SEO с помощью ratingCoach от IONOS!
Повысьте свой рейтинг в Google, оптимизировав свой веб-сайт без предварительного уведомления!
Легкий
Специально для вас
Круглосуточная поддержка 7 дней в неделю
Повышение скорости в PHP 7 снижение требований к памяти и более эффективное управление памятью.
Как работает кэширование OpCode
Обычно PHP-скрипты компилируются во время выполнения . Часть вычислительного времени требуется для преобразования кода. С OPcache этот расчет выполняется только один раз и предварительно скомпилированный машиночитаемый (вычисляемый) скрипт сохраняется в кэше. При необходимости скрипт может быть загружен из этого кеша молниеносно. В большинстве случаев это приводит к значительному увеличению скорости .
Крупные веб-сайты могут обрабатывать гораздо больше запросов одновременно с активированным OPcache, что является важным преимуществом для корпоративных веб-сайтов и приложений электронной коммерции.
Подготовка к переходу на PHP 7
PHP 7 предлагает очень хорошие совместимость со старыми версиями PHP — поэтому вероятность того, что существующие приложения и скрипты будут работать, высока. Тем не менее, мы рекомендуем протестировать веб-сайтов, плагинов и скриптов с PHP 7, прежде чем использовать PHP 7 в производственных средах.
Вот пример: Введение подсказок типа и слов «int», «string» и «float», зарезервированных впервые, по-прежнему вызывает проблемы для некоторых CMS в начале. Joomla!, например, несовместима с PHP 7 версии 3.4, потому что использует имя типа «string» таким образом, который не разрешен в PHP 7. Joomla! тем временем сообщество исправило использование.
Изменение версии PHP обычно занимает от нескольких секунд до минуты. Мы рекомендуем вам протестировать ваши скрипты после внесения изменений. Вы можете отменить изменения в вашей версии PHP в любое время.
Включить OPcache через php.ini
После перехода на PHP 7 вы можете включить кэширование OpCode (OPcache) для своих веб-сайтов. Вы должны создать новый каталог для кеша в вашем онлайн-хранилище и адаптировать php.ini в корневом каталоге вашего сайта.
Создание каталога онлайн-хранилища для кэша
Войдите в онлайн-хранилище через SFTP
Создайте новый каталог в корневом каталоге. В дальнейшем кэш для ваших сайтов будет храниться в этом каталоге.
Обратите внимание , что для защиты данных в кеше необходимо создать каталог с начальной точкой (например: .. /. opcache ). Затем этот каталог автоматически защищается вашим веб-сервером Apache.
Сохранить абсолютный путь в php.ini
На следующем шаге вы должны ввести абсолютный путь к созданному файлу . Каталог OPcache в php.ini .
Путь должен выглядеть следующим образом: /customers/websites/my-path/htdocs/.opcache
Настройка php.ini
Откройте главный каталог вашего веб-сайта через SFTP и откройте файл php.ini .
Добавьте сюда следующую запись:
opcache.file_cache=/customers/websites/my-path/htdocs/.opcache;
Обратите внимание, : Используйте абсолютный путь к вашему каталогу .opcache .OPcache в папке opcache.file_cache= .
Все содержимое php.ini после этого шага должно выглядеть следующим образом.
zend_extension=opcache.so; opcache.enable=1; opcache.memory_consumption=32; opcache.interned_strings_buffer=8; opcache.max_accelerated_files=3000; opcache.revalidate_freq=180; opcache.fast_shutdown=0; opcache.enable_cli=0; opcache.revalidate_path=0; opcache.validate_timestamps=1; opcache.max_file_size=0; opcache.file_cache=/клиенты/веб-сайты/мой-путь/htdocs/.opcache; opcache.file_cache_only=1;
Сохраните файл php.ini и загрузите его обратно в онлайн-хранилище.
Как проверить, активен ли OPcache для вашего веб-сайта
После того, как вы активировали OPcache для своего веб-сайта и несколько раз обращались к нему, вы можете просто проверить, правильно ли работает кэш .
Снова войдите в онлайн-хранилище через SFTP и откройте созданный ранее каталог ../.opcache . Вы должны увидеть кешированный контент вашего сайта в каталоге.
Сертификаты SSL от IONOS
Защитите свой домен и завоюйте доверие посетителей с помощью веб-сайта с шифрованием SSL!
Easy activation
Proven safety
24/7 assistance
- Создание каталога онлайн-хранилища для кэша