zend opcache php 7
Установка и настройка PHP OPcache
Установка PHP OPcache | Хостинг-провайдер Well-Web
Как увеличить производительность сервера на ОС CentOS. Часть вторая : Установка прекомпилятора PHP Zend OPcache.
В данной статье мы расскажем, как увеличить производительность виртуального сервера VPS на ОС CentOS путем установки прекомпилятора PHP Zend OPcache. Материал ориентирован на пользователей с небольшим багажом знаний в области администрирования, мы рассмотрим самые простые, и в тоже время действенные, способы повышения производительности сервера.
Установка прекомпилятора PHP Zend OPcache.
Установка Zend OPcache через панель управления возможна, но практически никогда не выполняется корректно. Поэтому мы рекомендуем установить расширение из командной строки.
Установка Zend OPcache на сервер с любой панелью управления.
Вам понадобится SSH доступ к серверу и SSH клиент. Если на Вашем ПК установлена операционная система Linux — SSH клиент Вам не нужен, можете использовать для подключения по SSH стандартный Linux терминал. Владельцам компьютеров с ОС Windows мы рекомендуем использовать SSH\Telnet клиент Putty. Данная программа бесплатна и проста в использовании.
Скачать последнюю версию с официального сайта можете по ссылке.
Подключитесь к Вашему серверу по SSH от имени суперпользователя root или другого пользователя с аналогичными привилегиями.
Добавьте репозиторий remi. Чтобы добавить репозиторий remi на CentOS 6 используйте следующие команды :
Для установки репозитория remi на CentOS 7 используйте такие команды :
Проверьте текущую версию PHP с помощью команды:
Для версии PHP 5.4 используйте такую команду :
Для версии 5.5, используйте команду :
Для версии 5.6, используйте команду :
Для установки opcache на PHP 7 используйте такую команду :
После установки дополнения перезагрузите веб сервер. Для этого используйте команду :
service httpd restart
service php-fpm restart
После перезагрузки можете проверить корректность установки дополнения с помощью команды :
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies С другими материалами по оптимизации настроек сервера можете ознакомиться по ссылкам :
Ускорение PHP | настройка Zend OPcache
Для уменьшения потребления памяти PHP и ускорения его работы рекомендуется использовать различные акселераторы. Особенно это актуально для бюджетных VPS с небольшим количеством оперативной памяти на которых крутятся сайты на прожорливых CMS типа WordPress.
Zend OPcache — расширение для PHP, основное назначение которого — увеличение производительности интерпретатора при обработке сценариев путем кэширования их байт-кода.
В данной статье расскажу как установить Zend OPcache на Ubuntu Server 18.04.
Если вы используете PHP 5.5 и выше, то в нем по-умолчанию идет Zend OPcache и ничего дополнительно ставить не нужно.
Проверим ZendOpCache на Ubuntu Server
Вывод должен быть примерно такой:
Настройка Zend OPcache
В сети много статей в которых описывается оптимальная настройка Zend OPcache. Почитав их, я решил объединить их в своей статье и найти золотую середину. На моем сервере установлен php 7.3 + nginx. И так, открываем файл конфигурации php. :
Находим следующие строки и выставляем значения как у меня (хотя можете поэкспериментировать)
Перезапуск web-сервера
Чтобы изменения вступили в силу нужно перезапустить вэб-сервер:
Изменение скорости работы сайта после установки акселератора PHP
Блог на WordPress, до настройке Zend OPcache, страница генерировалась за 0,37 сек., потребление памяти составляло 37 МБ.
После установки акселератора Zend OPcache скорость генерации страницы снизилась до 0,22 сек, потребление памяти при этом составило 11 МБ.
Комментарии излишни. Использование PHP акселератора положительно сказывается на скорости работы сайта и снижает потребление памяти.
Если есть вопросы, то пишем в комментариях.
Также можете помочь проекту, заранее всем СПАСИБО.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Ускорение PHP | настройка Zend OPcache
Для уменьшения потребления памяти PHP и ускорения его работы рекомендуется использовать различные акселераторы. Особенно это актуально для бюджетных VPS с небольшим количеством оперативной памяти на которых крутятся сайты на прожорливых CMS типа WordPress, Bitrix или MODx.
Zend OPcache — расширение для PHP, основное назначение которого — увеличение производительности интерпретатора при обработке сценариев путем кэширования их байт-кода.
В данной статье расскажу как установить Zend OPcache на Ubuntu Server 20.04 LTS
Если вы используете PHP 5.5 и выше, то в нем по-умолчанию идет Zend OPcache и ничего дополнительно ставить не нужно.
Проверяем установлен ли ZendOpCache на вашем сервере, вот так:
Вывод должен быть примерно такой:
Настройка Zend OPcache
В интернете множество статей в которых описывается оптимальная настройка Zend OPcache. Почитав их, я решил объединить их в своей статье и найти золотую середину. На моем сервере установлен php 7.4 + nginx в связке с Apache. И так, открываем файл конфигурации php. :
Находим следующие строки и выставляем значения как у меня (хотя можете поэкспериментировать)
Описание значений 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-сервера
Чтобы изменения вступили в силу нужно перезапустить вэб-сервер:
Изменение скорости работы сайта после установки акселератора PHP
Блог на WordPress, до настройке Zend OPcache, страница генерировалась за 0,55 сек., потребление памяти составляло 51 МБ.
После установки акселератора Zend OPcache скорость генерации страницы снизилась до 0,18 сек, потребление памяти при этом составило 17 МБ.
Комментарии излишни. Использование PHP акселератора положительно сказывается на скорости работы сайта и снижает потребление оперативной памяти.
Обзор zend расширения OPCache для PHP
Легкий способ увеличить скорость сайта
Зачем нужен Opcache?
OPCache появился в 2013 году и с того момента стал оптимальным и рекомендуемым разработчиками PHP решением для кэширования опкодов. В классическом варианте алгоритм отдачи контента состоит из обращения к файлу, последующего открытия файла для чтения, после чего происходит компиляция и в конечном итоге отдача контента клиенту.
При включении OPCache компиляцию из процесса можно исключить (кроме первичного обращения к файлу), это позволит увеличить быстродействие кода, т.к. при обработке любого скрипта компиляция является наиболее ресурсозатратным процессом.
Сегодня развитие расширения PHP OPCache производится только в пределах версии PHP 7.
Почему стоит включить OPCache?
Помимо обеспечения экономии ресурсов сервера и сокращения времени загрузки страниц сайта, включение OPCache дает ряд других значимых преимуществ:
Как OPCache улучшает производительность на WordPress, Joomla и Drupal?
В ходе проведения исследования мы установили, что на среднестатистическом сайте использование OPCache улучшает скорость загрузки в несколько раз, при этом количество используемой памяти сокращается в 2-4 раза. Таким образом, простое включение расширения OPCache наглядно демонстрирует увеличение производительности на популярных CMS.
Как установка OPCache улучшает работу 1С Bitrix?
Ниже представлен сайт клиента, который длительное время не мог решить проблему с оптимизацией конфигурации своей системы.
Рассмотрим, какие показатели были у него до включения OPCache Битрикс.
Благодаря несложной инструкции включения расширения zend OPCache PHP, владельцу сайта удалось повысить оценку конфигурации системы и увеличить среднее время отклика в 6 раз. Еще один рекомендуемый инструмент улучшения производительности для владельцев проектов на Bitrix.
Включение OPCache на UMI CMS
Рассмотрим, как включенный OPCache влияет на производительность umi cms.
В первом случае OPCache отключен и система показывает среднюю производительность.
После включения OPCache производительность системы увеличилась почти вдвое.
Включение и настройка OPCache на хостинге sweb
Установка и настройка OPCache не требует особых технических знаний.
На тарифах «стандартного виртуального хостинга» для включения OPCache перейдите в раздел «Настройка сайта» в панели управления, и во вкладке «Общие» выберите «Apache 2.2 + PHP 7.1 opcache».
Важно: Перед выбором обязательно убедитесь в том, что ваш сайт совместим с этой версией PHP.
На тарифах «реактивного хостинга» OPCache включен начиная с версии PHP 5.5.
Топ-6 сервисов для проверки кроссбраузерности сайта
Предварительная загрузка в PHP 7.4
Перевод данной статьи подготовлен специально для студентов курса «Backend разработчик на PHP».
В PHP 7.4 добавлена предварительная загрузка — возможность, которая позволяет значительно повысить производительность кода.
О предзагрузке в двух словах.
Поговорим о новой возможности подробнее.
Больше, чем Opcache
Да, предварительная загрузка основывается на opcache, но это не совсем одно и то же. Opcache берет исходные файлы PHP, компилирует их в опкоды, после чего сохраняет скомпилированные файлы на диск.
Опкоды можно считать низкоуровневым представлением вашего кода, которое легко интерпретируется во время выполнения. Таким образом, opcache позволяет пропустить этап трансляции исходных файлов в то, что, собственно, и необходимо интерпретатору PHP во время выполнения. Заметная экономия!
Тем не менее можно сэкономить еще больше. Скомпилированные при помощи opcash файлы ничего не знают о других файлах. Если у вас есть класс А, являющийся расширением класса B, их все равно нужно будет связать во время выполнения. Кроме того, opcache проверяет, изменились ли исходные файлы, и при обнаружения изменений аннулирует их кэши.
И тут на помощь приходит предварительная загрузка: она не только компилирует исходные файлы в опкоды, но и связывает зависимые классы, трейты и интерфейсы. Она сохраняет такой «скомпилированный» фрагмент исполняемого кода (то есть кода, который может использовать PHP-интерпретатор) в памяти.
Когда на сервер поступает запрос, тот может использовать части кодовой базы, которая уже была загружена в память, без лишних затрат времени.
О каких же «частях кодовой базы» идет речь?
Предварительная загрузка на практике
Для корректной предварительной загрузки разработчик должен указать серверу, какие файлы нужно загрузить. Это делается с помощью простого PHP-скрипта, так что бояться нечего.
Вот как вы можете подключить этот скрипт в php.ini:
А вот пример реализации:
Предупреждение о невозможности предварительно загрузить несвязанный класс
Появилось предупреждение Can’t preload unlinked class? Дело в том, что перед предзагрузкой файлов нужно также предварительно загрузить их зависимые объекты — интерфейсы, трейты и родительские классы.
Если возникнут какие-либо проблемы с зависимостями классов, то вас предупредят об этом при запуске сервера:
Обратите внимание, что opcache_compile_file() только распарсит файл, но не выполнит его. Это значит, что если у класса есть зависимости, которые не были предварительно загружены, то и сам класс не может быть предварительно загружен.
Это не критично: сервер будет работать, как обычно, но в вашем распоряжении не будет всех файлов, которые вы хотели предварительно загрузить.
Именно поэтому нужно внимательнее подбирать файлы для предварительной загрузки, чтобы избежать проблем с зависимостями. Делать это вручную — задача неблагодарная и трудоемкая, так что разработчики уже трудятся над автоматизированными решениями.
Поддержка composer
Наиболее перспективное автоматизированное решение готовят разработчики composer, который уже используется в большинстве современных PHP-проектов.
Требования к серверу
Есть еще два важных момента, о которых должен помнить разработчик при использовании предварительной загрузки.
На практике вам понадобится выделенный (виртуальный) сервер, чтобы оптимизировать предварительно загруженные файлы для отдельного проекта. Имейте это в виду.
Производительность
Теперь перейдем к самому важному вопросу: действительно ли предварительная загрузка повышает производительность?
Разумеется! Бен Морел (Ben Morel) поделился результатами сравнительного тестирования, которые можно найти в той же теме по composer, на которую мы ссылались выше.
И еще, что интересно. При желании вы можете предварительно загрузить только так называемые hot classes — классы, которые часто используются в вашей кодовой базе. Тесты Бена Морела показывают, что загрузка всего около 100 таких классов обеспечивает более высокий рост производительности, чем предварительная загрузка всего сразу. В первом случае производительность повышается на 17 %, во втором — на 13 %.
Разумеется, выбор классов для предварительной загрузки зависит от конкретного проекта. Разумнее всего для начала просто предварительно загрузить как можно больше. Если же вам так важны эти несколько процентов разницы в производительности, то придется контролировать код во время выполнения.
Все эти операции, конечно же, можно автоматизировать, и это, вероятно, будет сделано в будущем.
Сейчас важно, что в composer будет добавлена поддержка предзагрузки, что избавит от необходимости самостоятельно создавать файлы для нее. Эту функцию очень легко настроить на сервере при условии, что он находится в полном вашем распоряжении.
Будете ли вы использовать предварительную загрузку в новой версии PHP 7.4? Появились мысли или замечания? Напишите мне в Twitter или по электронной почте.
Традиционно ждем ваши комментарии и плюсы, если считаете статью интересной 🙂