Zend OPcache - PHP-акселератор, обеспечивает ускорение выполнения PHP кода благодаря кэшированию и оптимизации, сохраняет скомпилированный байт-код в разделяемой памяти.
Opcache позволяет значительно ускорить скорость генерации страниц.
OPcache включен по умолчанию начиная с PHP 5.5
Создадим файл конфигурации OPcache:
1 | echo > /etc/php.d/10-opcache.ini |
и добавим в него конфиг (пример конфигурации)
Не стоит использовать готовые конфигурации найденные в интернете. Это может привести к остановке работы сайта. Подбирайте индивидуально.
1 2 3 4 5 6 7 8 9 10 11 12 13 | zend_extension=opcache.so 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
1 | service httpd restart |
Включить JIT в PHP 8
Компилятор JIT (Just In Time) в PHP 8 реализован как часть расширения Opcache и призван компилировать операционный код в инструкции процессора в реальном времени. Что позволяет еще больше повысить производительность.
Для включения необходимо указать размер буфера opcache.jit_buffer_size, по умолчанию 0.
Добовляем в наш файл /etc/php.d/10-opcache.ini строку:
1 | 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 | Степень оптимизации
|