Страницы

Поиск по вопросам

пятница, 26 апреля 2019 г.

Для чего нужны memcached и OPcache и стоит ли использовать их вместе в PHP7?

Привет. Собственно, вопрос, стоит ли использовать memcached и Opcache вместе на PHP7? Почувствую ли я какой-то прирост производительности? Как гласит ответчик в теме на англоязычном StackOverflow:
OPcache is for accelerating code access
Что это значит? Ускорение доступа к коду? Или ускорение доступа кода к чему-то?
memcached is for accelerating data access
memcached нужен для ускорения доступа к данным. К каким?


Ответ

Как обычно выполняется PHP скрипт?
PHP открывает файл с кодом, компилирует его, затем выполняет. Поскольку файлов может быть много, процесс их открытия, чтения и компиляции может отнимать кучу времени и ресурсов. Если файлы не меняются, то постоянную компиляцию можно не делать. Лучше сделать ее один раз и закэшировать результат.
Именно это и делает модуль opCache. Результат первой компиляции будет сохранен в кэш, с которым и будет работать PHP. Таким образом это ускорит выполнение за счет отсутствия тяжелого процесса компиляции. Когда файлы изменяются, модуль сам сбросит кэш и обеспечит перекомпиляцию. Короче, этот модуль делает очень полезную экономию ресурсов даже без необходимости его как-то настраивать. Чем сложнее приложение, тем выше эффективность этой оптимизации.
Часто код просто медленный
Например, обращения к внешним API, тяжелые выборки из баз данных, обработка больших файлов может занимать продолжительное время. В этом случае, кэширование данных следует использовать, как средство оптимизации и в этом вам поможет memcached, который поможет сохранить часто получаемые результаты. Например сложная выборка из БД, которая пригодится многим пользователям, но очень сильно напрягает базу данных, хотя почти для всех одинакова с минимальными отличиями. Memcached спроектирован так, чтобы все его операции имели алгоритмическую сложность O(1), т.е. время выполнения любой операции не зависит от количества ключей, которые хранит memcached. Естественно, нужно учитывать, что архитектура предполагает потерю данных в случае сбоя.
Результат
OpCache -> сохраняет опкоды для увеличения производительности исполнения кода -> данные регулируется непосредственно PHP и конфигурацией
Memcached -> необходим для сохранения часто используемых данных и следовательно увеличивает скорость получения данных -> записываемые данные и их ключи регулируются разработчиком, который использует данное программное обеспечение
Полезные ссылки
Обзор OpCache и алгоритма работы
Обзор Memcached и алгоритма работы

Комментариев нет:

Отправить комментарий