Какие лучшие ускорители PHP?

Какие лучшие ускорители PHP? - rdd.media 2024

Ускорители PHP существенно улучшают производительность программного обеспечения на основе PHP, такого как WordPress. Запуск сайтов с высокой посещаемостью на базе приложений PHP возможен только благодаря ускорителям PHP. Их преимущества в производительности сильно различаются, так как это зависит от множества факторов, включая другие оптимизации, которые вам, возможно, придется применить на своем сайте.

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

В восторге? Давайте начнем!

ЧТО ТАКОЕ УСКОРИТЕЛИ PHP?

Ускоритель PHP – это расширение PHP, которое улучшает производительность приложений PHP. Эти расширения работают путем кэширования кода операции (или кода операции), созданного файлами PHP. По этой причине ускорители PHP также называют кэшированием кода операции .

Как работает ускоритель PHP (или кэширование кода операции)
Как работает ускоритель PHP (или кэширование кода операции)

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

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

Каждый раз, когда пользователь что-то запрашивает на вашем сайте, создание кода операции из сценариев PHP может быть очень затратным для вашего веб-сервера. Во-первых, сценарии должны быть токенизированы и проанализированы для создания абстрактного синтаксического дерева (AST), которое затем компилируется для создания кода операции.

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

Вы можете обойти эту проблему, сохранив код операции как кэш (OpCache) после его создания. Затем вы можете передать его всем последующим пользователям, не задействуя сервер. Именно это и делает ускоритель PHP.

Нет ничего необычного в том, что сайт WordPress ускоряется в два-три раза после установки и настройки ускорителя PHP.

ЛУЧШИЕ УСКОРИТЕЛИ PHP

PHP был запущен в 1995 году, что сделало его одним из старейших сохранившихся на сегодняшний день серверных языков. На протяжении всего времени существования для него было реализовано множество ускорителей (кэширование кода операции), но для настроек сервера, работающих в Linux, в основном существует только одно хорошо поддерживаемое и полезное решение : PHP OPcache .

Для приложений PHP, работающих в Windows и Windows Server, есть альтернативный ускоритель PHP под названием Windows Cache Extension for PHP . Кроме того, существует множество расширений для добавления функций во встроенное кэширование кода операции PHP. Я расскажу обо всех в этой статье.

PHP OPcache (Zend OPcache)

Расширение PHP OPcache ускоряет выполнение кода PHP за счет кэширования кода операции и других методов оптимизации. Он поставляется вместе с PHP 5.5 и более поздними версиями.

PHP OPcache также называется Zend OPcache, поскольку это реализация расширения кэширования кода операции Zend . Zend держал это расширение закрытым до выхода PHP 5.5. Следовательно, для многих пользователей альтернативный кэш PHP (APC) был идеальным решением для кэширования кода операции в PHP.

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

PHP OPcache работает, сохраняя кеш опкодов в общей памяти
PHP OPcache работает, сохраняя кеш опкодов в общей памяти

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

Кэш пользователя APC (APCu)

Альтернативный PHP Cache (APC) – это бесплатный ускоритель PHP с открытым исходным кодом. Как и Zend OPcache, он в основном предназначен для кэширования вывода кода операции PHP в общей памяти сервера. Поскольку это всегда было FOSS, еще несколько лет назад это было самым популярным решением для кэширования кода операции для PHP.

После того, как PHP OPcache стал частью PHP 5.5, разработка APC значительно замедлилась и сейчас считается мертвой. Однако некоторые функции APC по-прежнему недоступны в PHP OPcache. Одна из них – это функциональность кэша разделяемой памяти пользовательского уровня. Это также называется «кэшированием данных в памяти».

Чтобы решить эту проблему, разработчики APC лишили его всех функций кэширования кода операции и выпустили его как отдельное расширение под названием APCu . Он добавляет поддержку кэширования переменных PHP в пользовательском пространстве.

Вы также можете установить модуль обратной совместимости APCu, чтобы использовать APCu в качестве замены APC в современных версиях PHP.

Позже вы узнаете, как включить и настроить PHP OPcache и APCu на вашем сервере.

Расширение кэша Windows для PHP

Расширение кэша Windows для PHP – это ускоритель PHP, который ускоряет работу программного обеспечения PHP в Windows и Windows Server. Он не включает поддержку кеширования опкодов, поскольку PHP уже включает его в свое ядро, но включает 4 уникальных типа кеша:

  • Файловый кэш – PHP OPCache кэширует только код операции, созданный сценариями PHP. Механизм PHP по-прежнему должен иметь доступ к файлам сценариев на сервере. Выполнение файловых операций может привести к значительным накладным расходам, поэтому это расширение включает в себя файловый кеш, в котором сценарии PHP могут храниться в общей памяти.
  • Разрешение кеширования путей к файлам – большинство сценариев PHP используют относительные пути к файлам для ссылки на каждый уникальный файл. Механизм PHP должен преобразовать их в абсолютные пути к файлам для доступа к ним. Если есть много файлов, на которые ссылаются подобным образом, это может привести к проблемам с производительностью. Это расширение заранее сохраняет сопоставления всех относительных и абсолютных путей к файлам, чтобы механизм PHP не тратил слишком много времени на определение путей к файлам.
  • Кэш пользователя – этот кеш работает аналогично кешу разделяемой памяти пользовательского пространства APCu. Сценарии PHP могут использовать API-интерфейсы пользовательского кеша для хранения объектов и переменных в пользовательском кеше и повторно использовать их при последующих запросах. Это не только улучшает производительность сценариев PHP, но также позволяет механизму PHP обмениваться данными между несколькими процессами PHP.
  • Обработчик сеанса – хранит данные сеанса PHP в общей памяти сервера, чтобы избежать выполнения операций файловой системы для чтения и записи данных сеанса. Это полезно, если за один сеанс PHP генерируется огромное количество данных.

Большинство установок WordPress используют сервер Linux. Если вы один из дюжины пользователей, которые используют Windows Server для запуска вашего сайта, вы можете узнать больше об установке и настройке WinCache в его онлайн-руководстве.

УСТАНОВКА И НАСТРОЙКА PHP OPCACHE

Для PHP 5.5 и выше PHP по умолчанию компилирует OPcache как общее расширение во время установки PHP. Однако, если вы указали директиву –disable-all при установке PHP, вам необходимо явно разрешить OPcache, указав директиву –enable-opcache .

После того, как вы скомпилировали расширение OPcache, вам необходимо включить его и настроить его переменные.

Вы должны использовать директиву zend_extension, чтобы включить расширение OPcache. Для этого добавьте весь следующий код в свой файл php.ini .

zend_extension=/full/path/to/opcache.so

Примечание. Если у вас нестандартная установка сервера и вы не знаете полный путь, вы можете указать директиву extension_dir, чтобы сообщить PHP о необходимости поиска динамически загружаемых расширений в этом каталоге. Кроме того, для установок на базе Windows путь – C: \ path \ to \ php_opcache.dll .

После того, как вы включили OPcache, вам необходимо применить правильные настройки, чтобы получить от него максимальную производительность. В большинстве случаев вы можете добавить в файл php.ini следующие настройки :

opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

Вот разбивка всех директив и того, что они делают:

  • opcache.memory_consvention : устанавливает размер хранилища разделяемой памяти, доступного для OPcache. Значение указывается в мегабайтах, и его значение по умолчанию для PHP 7.0 и выше – 128 , но при необходимости вы можете установить его больше.

Перед изменением этого значения убедитесь, что на вашем сервере достаточно общей памяти для других служб, таких как MySQL.

  • opcache.interned_strings_buffer : указывает объем памяти, доступный для хранения интернированных строк. Интернирование строк – это метод оптимизации производительности, при котором в памяти хранится только одна копия каждой отдельной строки, что делает задачи обработки строк эффективными с точки зрения пространства и времени.

Его значение по умолчанию – 8 мегабайт. Вы можете увеличить его значение до 16, если на вашем сайте много кода.

  • opcache.max_accelerated_files : определяет максимальное количество сценариев PHP, которые могут храниться в хеш-таблице OPcache. Его минимальное значение – 200 , но вы можете установить его до 1000000 в PHP 5.5.6 и более поздних версиях. Обратите внимание, что фактическое значение, используемое OPcache, будет первое простое число, наиболее близкое к значению а не само значение.

Чтобы найти идеальное значение для установки здесь, вы можете подсчитать количество файлов PHP на вашем сервере Linux, запустив команду

find . -type f -print | grep php | wc -l

в вашем терминале. Установите значение этой директивы больше, чем количество файлов PHP на вашем сервере. Для большинства установок WordPress идеальным вариантом будет установка 10000 .

  • opcache.revalidate_freq : указывает OPcache, как часто нужно проверять временные метки скрипта на наличие обновлений. Его значение задается в секундах. Если вы установите его в 0 , OPcache будет проверять наличие обновлений при каждом запросе, что эквивалентно отключению кэширования опкодов.

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

  • opcache.fast_shutdown : включает последовательность быстрого завершения работы OPcache. Это ускоряет время отклика и повторного использования PHP-воркеров, поэтому они немедленно готовы к дополнительным запросам. OPcache достигает этого, используя диспетчер памяти Zend Engine, чтобы отменить назначение всех запросов за один раз.

Начиная с PHP 7.2, вариант этой директивы был интегрирован в ядро ​​PHP и будет использоваться автоматически, когда это возможно.

  • opcache.enable_cli: включает кэширование кода операции для версии PHP с интерфейсом командной строки. Установка флага в 1 включит кеширование кода операции на вашем сервере. Вы можете отключить кеширование кода операции для разработки и тестирования, установив его флаг в 0 .

Для получения дополнительных сведений и определений директив OPcache, которые вы можете использовать, обратитесь к руководству по настройке PHP OPcache во время выполнения . Если вы переключаетесь между этапами разработки и производства, рекомендуется ознакомиться со всеми директивами OPcache, чтобы максимально использовать их все.

Проверка статуса PHP OPcache

Вы можете проверить статус OPcache на своем сервере, запустив функцию opcache_get_status () .

Если на вашем сервере включен OPCache, он вернет массив, содержащий все свойства кэширования кода операции. Вот пример вывода этой функции . Если OPcache отключен на вашем сервере, он просто вернет false .

Вы можете подключить к этой функции необязательный параметр get_scripts, чтобы получить информацию о состоянии конкретного скрипта. Кроме того, вы также можете использовать функцию opcache_get_configuration () для получения информации о конфигурации OPcache, включая INI, черный список и используемую версию OPcache.

Подробный список всех функций OPcache вы можете найти в руководстве по функциям PHP OPcache .

Мониторинг и управление PHP OPcache

Существует множество расширений PHP, которые позволяют с легкостью управлять функциями OPcache через графический интерфейс. Два наиболее рекомендуемых расширения для этой цели – OpCacheGUI и opcache-gui (похожие имена, но разные расширения).

Расширение OpCacheGUI для PHP
Расширение OpCacheGUI для PHP

Хотя OpCacheGUI является более привлекательным расширением из двух, расширение opcache-gui регулярно обновляется для работы с последними версиями PHP. Вы можете использовать любой из них для простого управления и мониторинга PHP OPcache.

Панель управления PHP-расширения opcache-gui
Панель управления PHP-расширения opcache-gui

Установка и настройка APCu

Вы можете установить расширение APCu из репозитория PECL или прямо из PHP. Для начала выполните следующую команду в своем терминале:

sudo apt-get install php7.3-apcu

Примечание: в зависимости от вашей версии PHP вам необходимо использовать правильную директиву. Здесь это PHP 7.3, но на вашем сервере может быть установлена ​​другая версия PHP.

Во время установки вы можете столкнуться с вопросами о том, как настроить APCu на вашем сервере. Выберите значения по умолчанию для всех из них.

Затем проверьте файл php.ini и добавьте следующую строку, если она еще не добавлена ​​PHP.

extension=apcu.so

Это включит модуль apc.so на вашем сервере после его перезапуска. Для серверов, работающих на NGINX, вы должны использовать следующую команду:

sudo service php7.3-fpm restart
sudo service nginx reload

Если ваш сервер использует Apache, вы можете использовать следующую команду:

sudo service apache2 reload

Настройки APCu по умолчанию идеально подходят для большинства настроек, включая установку WordPress. Однако, если вы планируете их тонкую настройку, вы можете прочитать все доступные параметры конфигурации APCu .

Например, для директивы apcu.shm_size по умолчанию установлено значение 32M . Если вы обнаружите, что APCu исчерпывает выделенное пространство в общей памяти, вы можете выделить больше места для APCu, добавив директиву apcu.shm_size с настраиваемым значением в значение php.ini .

Примечание. APCu в версиях PHP 7+ не имеет полной обратной совместимости с APC. Если вам это нужно, вам также необходимо установить расширение APCu Backwards Compatibility (apc-bu) из репозитория PECL.

Более подробную техническую информацию об APCu вы можете найти в документации TECHNOTES .

ОЧИСТИТЕ OPCACHE С ПОМОЩЬЮ WP ROCKET

Когда вы изменили код PHP или добавили новые сценарии, вам может потребоваться очистить кеш кода операции на своем веб-сайте. Хотя вы можете сделать это через терминал, WP Rocket имеет встроенную опцию, позволяющую сделать это одним нажатием кнопки.

Для этого перейдите в « Настройки»> «WP Rocket» на панели администратора WordPress и нажмите кнопку « ОЧИСТИТЬ OPCACHE» .

Простая очистка OPcache с помощью WP Rocket
Простая очистка OPcache с помощью WP Rocket

Если у вас нет этой опции на панели настроек WP Rocket, значит, либо ваш сервер не настроен для использования OPcache, либо хост отключил очистку OPcache через API, добавив директиву opcache.restrict_api в php.ini файл. Вы можете прочитать больше об этой функции в документации WP Rocket .

РЕЗЮМЕ

Функциональность OPcache PHP по умолчанию обеспечивает заметное улучшение производительности для сайтов WordPress. В большинстве случаев прирост скорости в 3 раза больше. Если у вас сайт со средней или высокой посещаемостью, настоятельно рекомендуется включить кеширование кодов операций на вашем сервере.

Что касается лучшего ускорителя PHP, то сегодня есть только один, который безупречно работает для кэширования кода операции, и это встроенный в PHP OPcache. Вы также можете установить расширение APCu PHP, чтобы воспользоваться его функциональностью кэширования общей памяти в пользовательском пространстве.

Надеюсь, эта статья ответила на все ваши вопросы по ускорителям PHP. Начните ускорять работу своего сайта прямо сейчас!

У вас есть вопросы о кешировании кода операции или PHP OPcache? Если вы где-то застряли, оставьте комментарий ниже.