Ускорение PHP | настройка Zend OPcache

01.01.2021

Для уменьшения потребления памяти PHP и ускорения его работы рекомендуется использовать различные акселераторы. Особенно это актуально для бюджетных VPS с небольшим количеством оперативной памяти на которых крутятся сайты на прожорливых CMS типа WordPress, Bitrix или MODx.

Zend OPcache — расширение для PHP, основное назначение которого — увеличение производительности интерпретатора при обработке сценариев путем кэширования их байт-кода.

В данной статье расскажу как установить Zend OPcache на Ubuntu Server 20.04 LTS

Если вы используете PHP 5.5 и выше, то в нем по-умолчанию идет Zend OPcache и ничего дополнительно ставить не нужно.


Проверяем установлен ли ZendOpCache на вашем сервере, вот так:

php -v

Вывод должен быть примерно такой:

PHP 7.4.9-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Sep  2 2021 13:22:19) ( NTS )
 Copyright (c) 1997-2021 The PHP Group
 Zend Engine v3.3.9, Copyright (c) 1998-2021 Zend Technologies
     with Zend OPcache v7.3.9-1+ubuntu20.04.1+deb.sury.org+1, Copyright (c) 1999-2021, by Zend Technologies

Настройка Zend OPcache

В интернете множество статей в которых описывается оптимальная настройка Zend OPcache. Почитав их, я решил объединить их в своей статье и найти золотую середину. На моем сервере установлен php 7.4 + nginx в связке с Apache. И так, открываем файл конфигурации php. :

sudo nano /etc/php/7.3/fpm/php.ini

Находим следующие строки и выставляем значения как у меня (хотя можете поэкспериментировать)

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.fast_shutdown=1

Описание значений Zend OPcache

opcache.enable — включаем наш Zend OPcache.

opcache.enable_cli — включает OPcache в CLI-версии PHP.

opcache.memory_consumption — задает использование памяти для расширения (если ОЗУ позволяет, то можно увеличить значение).

opcache.interned_strings_buffer — задает объем памяти для хранения интернированных строк, в мегабайтах.

opcache.max_accelerated_files – максимальное количество скриптов в памяти (тут тоже можно увеличить, если памяти хватает).

opcache.revalidate_freq — это валидация кэша в секундах, в интернете все рекомендуют значение 60, я же использую 2, но иногда рекомендуют ставить 0 (ноль), то есть постоянно проверять на изменения. К примеру в Joomla OPcache кэширует все файлы и будет отдавать кэш после сохранения файлов еще то время, которое в этой строке. То есть вы сохранили файл, но все равно в течении указанного времени будете видеть старую копию из кеша. Поэтому не жалуйтесь, что файлы не сохраняются, подождите выставленное вами время.

opcache.fast_shutdown — определяет включено или выключено быстрое завершение последовательности ускоренного, кода, дает возможность использовать Zend Engine Memory Management

Перезапуск web-сервера

Чтобы изменения вступили в силу нужно перезапустить вэб-сервер:

/etc/init.d/nginx restart

или

sudo service nginx restart

Изменение скорости работы сайта после установки акселератора PHP

Блог на WordPress, до настройке Zend OPcache, страница генерировалась за 0,55 сек., потребление памяти составляло 51 МБ.

После установки акселератора Zend OPcache скорость генерации страницы снизилась до 0,18 сек, потребление памяти при этом составило 17 МБ.

Комментарии излишни. Использование PHP акселератора положительно сказывается на скорости работы сайта и снижает потребление оперативной памяти.