Расширение PHP Opcache — модуль , обеспечивающий кэширование результатов выполнения скриптов в памяти и повторную отдачу клиенту из кэша.
Как и любое кэширование это позволяет обеспечить экономию ресурсов и — самое важное — сокращение времени загрузки страниц сайта.
За счёт Opcache кэшируется неизменяемое динамическое содержимое сайта, т.е. скрипты, которые часто не изменяются. При обновлении скрипта кэш сбрасывается, обновленная версия вновь кэшируется.
Стандартный алгоритм отдачи контента выглядит как обращение к файлу, его открытие для чтения, компиляцию, отдачу клиенту.
Использование Opcache PHP позволяет исключить из процесса компиляцию (за исключением первого обращения к файлу), который является самым ресурсозатратным процессом при обработке любого скрипта.
Акселератор присутствует в РНР версий старше 5.5. Он есть по умолчанию или доступен для установки из репозитория во всех современных системах.
Имя пакета для разных систем разное, в CentOS 7 пакет называется php-opcache-7.4.33-4.el7.remi.x86_64.
Для Debian и Ubuntu найти пакет можно выполнив такую команду
dpkg -l | grep php | grep opcache
Для CentOS:
rpm -qa | grep php | grep opcache
Если пакет установлен нужно убедиться в том, что он используется сборкой PHP, расширение может быть не подключено.
Как проверить используется ли Opcache PHP
Проверить используется ли модуль можно создав в корне сайта файл, выводящий при обращении к нему из браузера актуальные настройки РНР
<?php
phpinfo();
?>
Это самый правильный способ проверки, он дает точный результат.
Также в консоли можно выполнить следующую команду (следует при учитывать, что через консоль выполняется PHP процесс, через браузер PHP-CGI и в некоторых случаях результаты могут отличаться )
php -i | grep opcache
Непустой вывод будет означать, что модуль используется.
Пример вывода для системы в котором акселератор подключен представлен на скриншоте:
Если модуля нет в выводе phpinfo и консольной команды, но расширение установлено — нужно подключить его.
Подключение выполняется в файле php.ini (полный путь видно в phpinfo), в нём нужно дописать zend_extension
=/FULL/PATH/TO/opcache.so
К .so файлу расширения указывается полный путь от корня.
Если путь неизвестен можно найти файл с помощью find
find / -name opcache.so
Применение акселератора PHP Opcache может быть очень результативно для проектов, содержащих большое количество РНР скриптов, большая часть которых остается неизменными достаточно долго.
В версиях РНР до 5.5 аналогичные opCache функции выполнял модуль APC.
Читайте также про включение логирования ошибок PHP.
Кэширование может производиться не только средствами PHP, но также браузером и веб-сервером.