- Home »

Что такое 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 в комплекте. Но включен ли он? Проверить просто:
- Создайте файл
phpinfo.php
с содержимым:<?php phpinfo();
- Откройте его в браузере и найдите раздел OPcache.
- Если он есть — отлично, осталось проверить, включен ли он.
Или сразу в консоли:
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, мониторьте его работу, и ваш сайт скажет вам спасибо скоростью и стабильностью!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.