PHP 8 обладает новыми возможностями для оптимизации производительности и новую функцию, увеличивающую скорость работы скриптов под названием JIT (Just In Time) компиляция.
Чистые интерпретируемые языки программирования не имеют этапа компиляции и напрямую выполняют код на виртуальной машине. Большинство интерпретируемых языков, включая PHP, фактически имеют облегченный этап компиляции для повышения производительности.
С другой стороны, языки программирования с опережающей компиляцией (AOT) требуют, чтобы код был скомпилирован перед его запуском.
Компиляция JIT (Just In Time) «точно в срок» — это гибридная модель интерпретатора и компиляции с опережением времени, при которой часть или весь код компилируется, часто во время выполнения, без необходимости разработчика компилировать его вручную.
Управление данной опцией осуществляется в модуле opcache. Данный модуль предназначен для ускорения работы скриптов, а включение JIT еще более ускоряет выполнение скриптов - т.е. дает возможность двойного ускорения.
Сравнительные график увеличения скорости.
Мы в своем примере будем использовать php 8.3.
1. Проверим наличие модуля
php8.3 -m | grep OPcache
В выводе он может отобразиться 2 раза в общем разделе и разделе Zend модулей. Это означает, что он включен.
1.1 Если он выключен, включим
В нашем примере мы используем Debian 12 и у Вас пути могут отличаться.
nano /etc/php/8.3/fpm/conf.d/10-opcache.ini
; configuration for php opcache module
; priority=10
opcache.enable=1
opcache.revalidate_freq=0
opcache.validate_timestamps=1
opcache.max_accelerated_files=10000
opcache.memory_consumption=192
opcache.max_wasted_percentage=10
opcache.interned_strings_buffer=16
opcache.fast_shutdown=1
zend_extension=opcache.so
opcache.jit=on
1.2 Включим модуль в настройках php
nano /etc/php/8.3/fpm/php.ini
Добавим в самый конец строки конфигурации:
zend_extension=opcache.so
opcache.enable=1
opcache.enable_cli=1
opcache.jit_buffer_size=256M
opcache.jit=1235
1.3 Перезапустим fpm
service php8.3-fpm restart
service php8.3-fpm status
1.4 Снова проверим наличие модуля
php8.3 -m | grep OPcache
1.5 Проверка с помощью скрипта
Создадим php файл следующего содержания
touch info.php
nano info.php
<?php
phpinfo();
?>
Откройте скрипт через браузер http[s]://domain.tld/info.php и используя поиск Ctrl + f по слову opcache найдите параметры настроек.
Данные строки говорят о том, что модуль OPcache и надстройка JIT включены.