Home » Что такое OPcache и как его включить?
Что такое OPcache и как его включить?

Что такое OPcache и как его включить?

Почему скорость PHP — это важно?

Вы когда-нибудь задумывались, почему ваш сайт на WordPress, Bitrix или любом другом PHP-движке еле ползает, а у конкурентов летает? Или почему нагрузка на сервер растет, а бюджет на хостинг — вместе с ней? Всё дело в том, как PHP работает «из коробки». Каждый раз, когда кто-то заходит на ваш сайт, PHP по новой компилирует скрипты — даже если они не менялись. Представьте, что вы каждый день собираете один и тот же шкаф из IKEA с нуля… Звучит глупо? Вот тут и появляется герой — OPcache!

Что такое OPcache? Простыми словами

OPcache — это встроенный в PHP механизм ускорения. Он берет ваш PHP-код, компилирует его в байткод (машинный код для PHP-движка), и хранит этот байткод в оперативной памяти. В следующий раз, когда кто-то попросит тот же скрипт — PHP не будет его собирать заново, а просто возьмет готовый байткод из памяти. Экономия времени — колоссальная!

  • Сайт работает быстрее (иногда в 2-3 раза!).
  • Меньше нагрузка на процессор и диск.
  • Можно обслуживать больше посетителей с тем же железом.

OPcache — это не панацея, но must-have для любого PHP-проекта.

Как узнать, есть ли OPcache на вашем сервере?

Почти все современные версии PHP (5.5+, а лучше — 7.x/8.x) уже идут с OPcache в комплекте. Но включен ли он? Проверить просто:

  1. Создайте файл phpinfo.php с содержимым:
    <?php phpinfo();
  2. Откройте его в браузере и найдите раздел OPcache.
  3. Если он есть — отлично, осталось проверить, включен ли он.

Или сразу в консоли:

php -i | grep opcache

Если видите строки вроде opcache.enable => On — всё ок!

Как включить OPcache: Пошагово

Включение зависит от типа хостинга и доступа к серверу. Разберём три самых частых случая:

1. Виртуальный/выделенный сервер (VPS/VDS, root-доступ)

  • Откройте файл php.ini. Обычно он лежит в /etc/php/7.4/apache2/php.ini или /etc/php/7.4/fpm/php.ini (замените 7.4 на вашу версию).
  • Найдите или добавьте строки:

zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
  • Сохраните файл и перезапустите PHP:
sudo systemctl restart php7.4-fpm

или, если Apache:

sudo systemctl restart apache2

2. Shared-хостинг (без root-доступа)

  • Часто OPcache уже включён — проверьте через phpinfo().
  • Если нет — попробуйте добавить в .user.ini в корне сайта:

opcache.enable=1
opcache.memory_consumption=64
  • Если не работает — пишите в поддержку. Многие хостеры включают OPcache по запросу.

3. Панели управления (ISPmanager, cPanel, Plesk)

  • Зайдите в настройки PHP для нужного сайта/домена.
  • Включите опцию OPcache (обычно галочка или выпадающий список).
  • Задайте параметры (см. пример выше).

Кратко о важных настройках OPcache

  • opcache.enable — включает/выключает OPcache.
  • opcache.memory_consumption — сколько МБ ОЗУ выделять под кеш (64-256 МБ — норм для большинства сайтов).
  • opcache.max_accelerated_files — сколько файлов кешировать (10000-20000 для средних проектов).
  • opcache.revalidate_freq — как часто проверять изменения файлов (секунды, 60 — норм для продакшена).
  • opcache.validate_timestamps — проверять ли время изменения файлов (1 — для разработки, 0 — для продакшена).

Полный список параметров — официальная документация.

Плюсы и минусы использования OPcache

Плюсы:

  • Мгновенное ускорение PHP-приложений.
  • Меньше нагрузка на CPU и диск.
  • Простая настройка, встроен в PHP.
  • Бесплатно!

Минусы (и когда стоит быть осторожнее):

  • Если часто меняете PHP-файлы вручную — кеш может не обновиться мгновенно (особенно если opcache.revalidate_freq большой).
  • На очень маленьких сайтах ускорение может быть не так заметно.
  • Неправильные настройки могут привести к исчерпанию памяти (будьте аккуратны с opcache.memory_consumption).

Реальные кейсы: где OPcache спасает, а где может навредить

Позитивный кейс:

На одном из моих проектов (WordPress + WooCommerce, 15k товаров, 50k посетителей/сутки) после включения OPcache и настройки opcache.memory_consumption=256 загрузка страниц ускорилась с 1.8 сек до 0.7 сек. Сервер перестал «захлебываться» в пиковые часы, а бюджет на апгрейд железа удалось отложить на год.

Негативный кейс:

У знакомого дорвейщика на самописном движке после обновления нескольких файлов изменения не применились — OPcache держал старую версию. Причина: opcache.revalidate_freq=3600 (целый час!). Решение: уменьшить до 60, а на время разработки — до 1.

Практические советы по работе с OPcache

  • На продакшене ставьте opcache.validate_timestamps=0 (максимум производительности, но нужно сбрасывать кеш вручную после обновления сайта).
  • Для разработки — opcache.validate_timestamps=1 и opcache.revalidate_freq=1.
  • Мониторьте использование памяти OPcache с помощью opcache-status или аналогичных скриптов.
  • Если часто обновляете код — используйте команду для сброса кеша:
    php -r 'opcache_reset();'
  • Регулярно проверяйте логи ошибок — иногда OPcache может ругаться на нехватку памяти.

Бонус: ошибки новичков, мифы и похожие решения

Типичные ошибки:

  • Забыли перезапустить PHP/Apache после изменения php.ini.
  • Поставили слишком маленькое значение opcache.memory_consumption — кеш быстро забивается, и ускорения нет.
  • Оставили validate_timestamps=1 на продакшене — часть производительности теряется.

Мифы:

  • OPcache может сломать сайт — это крайне редко, только если код меняется «на лету» и кеш не сбрасывается.
  • OPcache — только для больших сайтов. Нет, даже на маленьких блогах ускорение ощутимо.

Похожие решения:

  • APCu — кеширует переменные, а не байткод.
  • Redis/Memcached — кешируют данные, но не PHP-код.
  • ZendOptimizer, eAccelerator, XCache — устаревшие аналоги OPcache, сейчас почти не используются.

Заключение: стоит ли включать OPcache?

Если вы работаете с сайтами на PHP — будь то лендинг, интернет-магазин, дорвей или корпоративный портал — OPcache должен быть включён по умолчанию. Это бесплатный, встроенный в PHP способ ускорить сайт, снизить нагрузку и, возможно, сэкономить на апгрейде железа. Настроить его можно за 5-10 минут, а эффект почувствуете сразу.

Проверьте, включён ли OPcache у вас, и не стесняйтесь экспериментировать с настройками (но делайте бэкапы!). Если есть вопросы — смело гуглите или заглядывайте в официальную документацию.

Мой совет: включайте OPcache, мониторьте его работу, и ваш сайт скажет вам спасибо скоростью и стабильностью!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked