Вы устали от медленного выполнения PHP-скриптов и низкой производительности приложений? Вы изо всех сил пытаетесь оптимизировать свой код и сократить время загрузки? Если да, то вы не одиноки. Многие разработчики сталкиваются с этими проблемами при работе с приложениями PHP.
К счастью, есть решение: OPcache.
Этот мощный кэш опкодов сохраняет предварительно скомпилированный байт-код скрипта PHP в общей памяти, сокращая время, необходимое для выполнения ваших скриптов. Следовательно, это повышает производительность вашего PHP-приложения, позволяя вам сосредоточиться на том, что действительно важно: обеспечении отличного пользовательского опыта.
В этом сообщении блога я проведу вас через процесс установки и настройки OPcache с вашим PHP-приложением.
OPcache сохраняет предварительно скомпилированный байт-код скрипта в общей памяти, что повышает производительность PHP. Он кэширует код операции, позволяя обслуживать сценарии непосредственно из кеша. Это снижает использование ЦП и памяти, оптимизирует использование ресурсов и повышает масштабируемость приложений PHP.
При включенном OPcache скрипты хранятся в памяти и компилируются только обновления. Это устраняет необходимость перекомпиляции PHP-скриптов, снижает нагрузку на сервер и ускоряет выполнение PHP. Это приводит к более быстрой загрузке веб-страницы и более плавному взаимодействию с пользователем.
PHP OPcache повышает производительность, проверяя предварительно скомпилированный байт-код сценария в общей памяти каждый раз при компиляции сценария. Если код не найден, OPcache автоматически компилирует его и сохраняет в памяти, а затем генерирует выходные данные.
На диаграмме ниже показан процесс выполнения кода с помощью PHP OPcache, четко объясняя, как он работает.
Разным приложениям нужны разные типы кэширования. PHP OPcache отлично подходит для ускорения PHP. В этой таблице сравниваются различные варианты кэширования.
Особенность | PHP ОПкэш | АПКу | Мемкеш |
Механизм кэширования | Кэш опкода | Кэш пользовательских данных | Распределенный кэш |
Интеграция | В комплекте с PHP | Отдельное расширение | Отдельная служба |
Монтаж | Легкий | Легкий | Требуется настройка сервера |
Производительность | Отличный | Хороший | Отличный |
Масштабируемость | NA | NA | Высокий |
Поддержка пользовательских данных | Нет | Да | Да |
Механизм хранения | В памяти | В памяти | Распределенный (ОЗУ) |
Срок действия кэша | NA | TTL или ручная очистка | TTL или ручная очистка |
Инвалидация кэша | Автоматически (изменение файла) | Ручная очистка | Ручная очистка |
Поддержка сообщества | Сильный | Сильный | Сильный |
Случаи использования | В основном используется для кэширования кода операции для ускорения выполнения PHP. | Больше подходит для кэширования пользовательских данных или сценариев распределенного кэширования. | Больше подходит для кэширования пользовательских данных или сценариев распределенного кэширования. |
PHP OPcache необходим для любого веб-приложения на основе PHP, повышая производительность и удобство использования. Он сохраняет предварительно скомпилированный байт-код в памяти, устраняя повторяющийся анализ и компиляцию PHP-скриптов.
Это позволяет серверам эффективно обрабатывать больше запросов, упрощая масштабирование веб-приложений без увеличения ресурсов сервера. OPcache также сокращает операции ввода-вывода на диске, ускоряя выполнение PHP и улучшая скорость реагирования веб-сайта.
Благодаря совместимости с PHP, простой интеграции и масштабируемости OPcache является обязательным компонентом любой серверной среды PHP, повышая производительность и надежность веб-приложений на основе PHP.
Я нашел тематическое исследование о том, как OPcache улучшил производительность веб-сайта. Пользователь по имени Tschallacka поделился конфигурацией своего сервера и рассказал, как быстро обрабатываются запросы. В тематическом исследовании показано, как OPcache может ускорить и улучшить производительность приложения.
Без OPcache
При использовании этого сценария без OPcache я отправляю 9000 запросов на сервер Apache за 2,8 секунды. Он достигает максимальной загрузки ЦП на 90–100% в течение 70–80 секунд, пока не обработает все запросы.
Общее затраченное время : 76085 миллисекунд (76 секунд).
С OPcache
При включенном OPcache он работает с загрузкой процессора 25-30% в течение примерно 25 секунд и никогда не превышает 25% загрузки процессора.
Общее затраченное время: 26490 миллисекунд (26 секунд).
Я создал файл черного списка OPcache, чтобы отключить кеширование всего, кроме фреймворка, который является статическим и не требует изменения функциональности.
Я явно выбираю разработку файлов фреймворка, не беспокоясь о перезагрузке/проверке файлов кэша. Кэширование всех данных экономит секунду на общем количестве запросов, 25546 миллисекунд.
Это значительно увеличивает объем данных/запросов, которые я могу обрабатывать в секунду, при этом сервер даже не вспотеет.
Чтобы использовать OPcache, вам необходимо скомпилировать его как общее расширение. Если вы отключили расширения по умолчанию, вам необходимо скомпилировать PHP с опцией –enable-opcache. Затем вы можете загрузить расширение OPcache в PHP, используя директиву конфигурации zend_extension.
В PHP 5.5 и более поздних версиях вам не нужны APC или аналогичные расширения кэширования байт-кода, поскольку OPcache интегрирован в ядро PHP. Это обеспечивает лучшую стабильность и официально поддерживается разработчиками PHP.
Хотя последнее обновление делает OPcache совместимым с PHP 8. Однако эксперты рекомендуют пользователям выбирать PHP v5 и v7. Чтобы начать использовать OPcache, необходимо сначала включить его вручную. Для этого вам придется сделать следующее:
Добавьте следующую строку в ваш php.ini:
zend_extension=/full/path/to/opcache.so (nix) zend_extension=C:\path\to\php_opcache.dll (win)
Обратите внимание: если путь содержит пробелы, его следует заключить в кавычки:
Кроме того, вам придется использовать директиву zend_extension вместо «обычной» директивы расширения, поскольку она влияет на реальный движок Zend (то есть на то, что запускает PHP).
Команда pecl попытается автоматически обновить файл configure php.ini.
Теперь, когда вы правильно настроили OPcache, пришло время обновить рекомендуемые настройки для оптимизации производительности. Настройки следующие:
Некоторые другие настройки могут быть полезны, например, если вы используете аннотации кода, вы можете использовать:
Полный список конфигураций времени выполнения вы можете увидеть здесь.
Хотя PHP OPcache может повысить производительность, крайне важно отслеживать поведение кэширования и корректировать настройки в соответствии с потребностями вашего приложения.
Vps позволяет вам изменять настройки памяти на вкладке настроек сервера и пакетов.
Помните, что у вас нет доступа к файлу php.ini, поэтому будут применены значения по умолчанию. Вы можете изменить объем памяти обоих вариантов в соответствии с требованиями вашего приложения.
Значения настройки по умолчанию следующие:
Традиционный способ проверить, работает ли на сервере кэширование OPcode PHP, — написать phpinfo(); в файле .php и посмотрите статус:
Но если вы хотите увидеть оптимизированный графический интерфейс с пользовательским взаимодействием, в котором у вас есть возможность управлять настройками с помощью кнопок, вы можете использовать пакеты с открытым исходным кодом, доступные на GitHub. Таким образом, для этой работы можно использовать следующие пакеты.
OPcacheGUI позволяет вам управлять такими функциями OPcache, как статус, конфигурации, сброс, обзор сценариев и т. д., с помощью приятного пользовательского интерфейса. Вы также можете просмотреть состояние памяти, клавиш и обращений в графической форме. Тем самым упрощая общий процесс обработки данных для пользователей.
OPcache-Status предоставляет одностраничную страницу состояния для кэширования OPcode PHP. Еще несколько вещей, которые он может сделать для вас:
OPcache-GUI предоставляет вам простой в использовании пользовательский интерфейс для настроек OPcache, созданный с помощью jQuery и React. Вы можете увидеть такую информацию, как ваш хост, платформа, версия и дата последнего сброса. Он также показывает все доступные функции и важную статистику, такую как количество обращений и использование памяти.
К настоящему моменту вы, вероятно, убедились в преимуществах интеграции PHP OPcache в ваши веб-приложения. Этот мощный инструмент произвел революцию в производительности PHP, значительно повысив скорость и эффективность ваших веб-приложений.
Благодаря кэшированию кода вам больше не придется тратить время на повторную компиляцию кода. Вместо этого код компилируется только при обновлении, а затем сохраняется в общей памяти для молниеносного доступа. Это экономит время и ресурсы, обеспечивая бесперебойную работу.
Не упустите возможность поднять производительность PHP на новый уровень с помощью OPcache!
Вопрос. Как включить кэширование кода операции PHP?
О. Чтобы включить кэширование кода операции PHP, ниже приведен код, который вам нужно будет изменить в файле php.ini.
Вопрос. Как отключить кэширование кода операции PHP?
A. Чтобы отключить кэширование кода операции PHP, откройте SSH-терминал и перейдите в корень, затем отредактируйте приведенный ниже файл:
Вопрос. Как очистить PHP OPcache?
A. Чтобы очистить содержимое PHP OPcache, перезагрузите модуль/демон PHP, используемый веб-сервером, и содержимое OPcache будет удалено. Выполните следующие команды, чтобы завершить процесс:
Вопрос. Что делать, если PHP Opcache не работает?
О. Если PHP Opcache не работает должным образом, перейдите к файлу php.ini и проверьте раздел Opcache. Убедитесь, что в этом файле установлено значение opcache.enable=1. Если нет, то установите его соответствующим образом.