// blog

Настройка PHP OPcache для максимальной производительности: практическое руководство

August 20, 2026 · by CLIQHOST

Настройка PHP OPcache для максимальной производительности: практическое руководство

Если у вас есть сайт на WordPress, Joomla или любое другое PHP-приложение, и вы хотите ускорить его без дополнительных затрат на железо, PHP OPcache — одно из самых эффективных решений. Расширение включено в PHP начиная с версии 5.5 и способно сократить время ответа сервера на 50–80%.

В этом руководстве вы узнаете, что именно делает OPcache, как его активировать и правильно настроить — на VPS NVMe с root-доступом или через панель хостинга cPanel.


Что такое PHP OPcache и как он работает?

Каждый раз, когда сервер получает PHP-запрос, интерпретатор выполняет следующее:

  1. Читает .php-файл с диска
  2. Компилирует его в байткод
  3. Выполняет байткод
  4. Возвращает ответ

Шаги 1 и 2 повторяются при каждом запросе, даже если код не изменился. OPcache устраняет повторную компиляцию, сохраняя скомпилированный байткод непосредственно в оперативной памяти. При последующих запросах PHP переходит сразу к выполнению.

Результат: меньше нагрузки на CPU, быстрые ответы, более высокая пропускная способность.


Шаг 1: Проверьте, активен ли OPcache

На VPS SSD с SSH-доступом выполните:

php -r "echo opcache_get_status() ? 'OPcache активен' : 'OPcache неактивен';"

Или создайте временный файл:

echo '<?php phpinfo(); ?>' > /var/www/html/info.php

Откройте https://yourdomain.md/info.php в браузере и найдите раздел Zend OPcache. Удалите файл сразу после проверки — он раскрывает чувствительную информацию о сервере.

В cPanel проверить активные расширения можно через MultiPHP INI Editor или PHP Selector.


Шаг 2: Активация OPcache (если ещё не активен)

На VPS / выделенном сервере (php.ini)

Найдите файл php.ini:

php --ini | grep "Loaded Configuration"

Откройте файл и добавьте или раскомментируйте:

extension=opcache
zend_extension=opcache

Перезапустите PHP-FPM или Apache:

# Для PHP-FPM
systemctl restart php8.2-fpm

# Для Apache с mod_php
systemctl restart apache2

В cPanel (MultiPHP INI Editor)

  1. Перейдите в cPanel → MultiPHP INI Editor
  2. Выберите домен и версию PHP
  3. Найдите opcache.enable и установите значение 1
  4. Сохраните изменения

Шаг 3: Оптимальные настройки OPcache

Вот где разница между просто активным OPcache и правильно настроенным. Добавьте эти директивы в php.ini или в отдельный файл /etc/php/8.2/fpm/conf.d/10-opcache.ini:

; Активация
opcache.enable=1
opcache.enable_cli=0

; Выделенная память (МБ) — рекомендуем 128–256 МБ
opcache.memory_consumption=128

; Размер буфера интернированных строк
opcache.interned_strings_buffer=16

; Максимальное количество файлов в кеше
opcache.max_accelerated_files=10000

; Интервал проверки изменений (сек). 0 = ручной сброс
opcache.revalidate_freq=60

; Валидация временных меток (1 = да, 0 = макс. производительность, ручной сброс)
opcache.validate_timestamps=1

; Сохранение комментариев (нужно для фреймворков с аннотациями)
opcache.save_comments=1

; Файловый кеш на диске (резерв после перезапуска)
opcache.file_cache=/tmp/opcache
opcache.file_cache_consistency_checks=1

Пояснения к ключевым параметрам:

Директива Рекомендуемое значение Описание
memory_consumption 128–256 МБ RAM для кеша байткода
max_accelerated_files 10 000–20 000 WordPress + плагины = тысячи файлов
revalidate_freq 60 (прод.) / 0 (dev) Как часто проверять изменения
validate_timestamps 1 Автоматически обнаруживать изменённые файлы

Шаг 4: OPcache для WordPress — специфические настройки

WordPress с типичным набором плагинов может генерировать 3 000–8 000 PHP-файлов. С WooCommerce, дочерними темами и конструкторами страниц это число быстро растёт.

Рекомендации для WordPress-сайта на WordPress-хостинге:

opcache.memory_consumption=192
opcache.max_accelerated_files=15000
opcache.revalidate_freq=300
opcache.fast_shutdown=1

После каждого обновления темы или плагинов вручную сбросьте кеш OPcache. Простой скрипт:

<?php
if (function_exists('opcache_reset')) {
    opcache_reset();
    echo 'OPcache успешно сброшен.';
}

Или через WP-CLI (рекомендуется на VPS):

wp eval 'opcache_reset();' --allow-root

Шаг 5: Мониторинг состояния OPcache

Подробную статистику можно получить с помощью opcache_get_status():

<?php
$status = opcache_get_status();
echo 'Используемая память: ' . round($status['memory_usage']['used_memory'] / 1024 / 1024, 2) . ' МБ\n';
echo 'Файлов в кеше: ' . $status['opcache_statistics']['num_cached_scripts'] . '\n';
echo 'Hit rate: ' . round($status['opcache_statistics']['opcache_hit_rate'], 2) . '%\n';

Здоровый hit rate — выше 90%. Если он ниже:
- Увеличьте memory_consumption
- Увеличьте max_accelerated_files
- Проверьте, не вызывает ли validate_timestamps частых инвалидаций

Для визуального мониторинга используйте бесплатный инструмент opcache-gui — простой дашборд, который устанавливается прямо на сервер.


Шаг 6: OPcache в продакшене и при разработке

Продакшен (рекомендуется)

opcache.validate_timestamps=1
opcache.revalidate_freq=300

Локальная разработка

opcache.validate_timestamps=1
opcache.revalidate_freq=0

Или полностью отключите OPcache в dev, чтобы видеть изменения мгновенно:

opcache.enable=0

На продакшен-VPS NVMe никогда не устанавливайте одновременно revalidate_freq=0 и validate_timestamps=0 без автоматического сброса кеша после деплоя.


Типичные ошибки и как их избежать

1. Недостаточно выделенной памяти

Если memory_consumption слишком мал (например, 32 МБ), кеш быстро заполнится и производительность упадёт. Проверьте реальное использование через opcache_get_status() и скорректируйте значение.

2. Слишком малое значение max_accelerated_files

Значение по умолчанию (2 000) недостаточно для WordPress. Установите минимум 10 000.

3. Забыли сбросить кеш после деплоя

Если вы обновили PHP-файлы, но OPcache отдаёт старую версию, вы увидите странное поведение или ошибки. Добавьте opcache_reset() в скрипт деплоя или CI/CD-пайплайн.

4. OPcache на shared-хостинге без изоляции

На качественном shared-хостинге, например cPanel-хостинг CLIQHOST, OPcache настроен с изоляцией по пользователям — один аккаунт не влияет на другой.


OPcache + другие методы кеширования: выигрышная комбинация

OPcache оптимизирует выполнение PHP (на стороне сервера). Для полной производительности комбинируйте его с:

  • Redis — кеш объектов и сессий
  • CDN — для статических файлов (изображения, CSS, JS)
  • Page cache (W3 Total Cache, WP Rocket) — кеширование HTML
  • Gzip/Brotli на уровне Nginx/Apache

Эта комбинация позволяет достичь времени ответа менее 200 мс даже при высоком трафике. Если вам нужен полный контроль над стеком, управляемый выделенный сервер обеспечит необходимые ресурсы и гибкость.

Если хотите узнать больше о настройке серверной производительности, загляните в наш блог — там регулярно появляются практические руководства.


Заключение

PHP OPcache — одна из простейших и эффективнейших оптимизаций для PHP-сервера. Несколько правильно подобранных директив в php.ini значительно снижают нагрузку на CPU и ускоряют время ответа без дополнительных затрат.

Ключевые шаги:
1. Убедитесь, что OPcache активен
2. Выделите достаточно RAM
3. Установите max_accelerated_files под размер вашего приложения
4. Сбрасывайте кеш после каждого деплоя или обновления
5. Следите за hit rate и периодически корректируйте настройки

Если хотите хостинг, где OPcache настроен правильно с самого начала, изучите варианты VPS NVMe или WordPress-хостинга от CLIQHOST — или свяжитесь с нами для индивидуальной настройки.

SHARE
// Что говорят наши клиенты

Что говорят наши клиенты

Реальные отзывы клиентов, которые доверяют CLIQHOST за производительность, надёжность и профессиональную техническую поддержку.

★★★★★

"We moved our online shop from a foreign host and the difference is night and day — pages load instantly and support replies in minutes, in Romanian."

AM
Andrei M.
eCommerce owner · Chișinău
★★★★★

"Migrated 12 client sites to CLIQHOST. Free migration, zero downtime, and the cPanel setup is exactly what my team needed. Highly recommend."

EV
Elena V.
Web agency · Bălți
★★★★★

"Our NVMe VPS handles traffic spikes without a sweat. Full root, local datacenter, and billing in MDL — everything we wanted from a provider."

DC
Dmitri C.
SaaS founder · Chișinău