Что такое расширение OPcache в PHP?

«Что такое расширение OPcache в PHP?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

OPcache (ранее Zend Optimizer+) — это встроенное в ядро PHP расширение для кеширования скомпилированного байт-кода. Его основная задача — радикально повысить производительность PHP-скриптов.

Как это работает:

  1. При первом запросе PHP компилирует исходный код (*.php файл) в байт-код (opcodes).
  2. OPcache сохраняет этот скомпилированный байт-код в общей памяти (shared memory).
  3. При последующих запросах к тому же скрипту PHP использует готовый байт-код из памяти, пропуская этапы чтения с диска и компиляции.

Ключевые настройки в php.ini:

zend_extension=opcache.so ; или opcache.dll на Windows
opcache.enable=1
opcache.memory_consumption=128 ; Выделяемая память под кеш (в МБ)
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2 ; Как часто проверять файлы на изменения (в секундах)
opcache.preload=/path/to/preload.php ; Предзагрузка критических классов

Практическое значение: Без OPcache фреймворки вроде Laravel или Symfony работали бы неприемлемо медленно, так как при каждом запросе компилируются сотни файлов. OPcache — обязательный компонент для production-окружения. Для разработки opcache.revalidate_freq часто ставят в 0, а opcache.validate_timestamps включают, чтобы изменения в коде применялись сразу.