PHP Opcache  установка, настройка, включение.

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

Как работает Opcache?

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

Но на production серверах содержимое файлов неизменно, а значит процесс компиляции происходит снова и снова одних и тех же файлов с кодом PHP.

И вот здесь нам на помощь приходит расширение PHP Zend Opcache, предназначенное для повышения производительности PHP, сокращения времени загрузки веб-страниц и уменьшения нагрузки на сервере.

Производительность достигается путем компиляции кода PHP файлов при первом обращении к ним — далее модуль Opcache кэширует результат компиляции в общую память и все последующие PHP-скрипты больше не тратят ресурсы на повторное чтение и компиляцию php файла, а используют готовые результата из кэша opcache.

Вначале, написанный нами код разбирается лексическим анализатором. Далее, полученные лексемы, передаются в синтетический анализатор. Если синтаксический анализатор дал добро, то лексемы передаются транслятору, а он, в свою очередь, генерирует так называемые opcodes (operation codes). И только после этого, в дело вступает виртуальная машина PHP (та самая Zend Engine) которая и выполняет наш алгоритм из получившихся opcodes. Opcodes так же называют эдаким php-шным ассемблером.

Таким образом для всех запросов уходит этап компиляции и скорость выполнения PHP-скриптов — вырастает вразы!

 

Как установить модуль Opcache?

Зачастую на вашем сервере он уже будет установлен, проверить это можно, выполнив команду 

php -m

Либо команду с версией PHP, где также будет указано, что у вас имеется установленный компонент:

php -v

Если у вас этот модуль не установлен, то будет достаточно последовательно выполнить пару команд:

apt update

apt install php-opcache

Типовые настройки Opcache

Для старта и повышения производительности будет достаточно:

zend_extension=opcache.so
opcache.enable_cli = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 5000
opcache.revalidate_freq = 60
opcache.fast_shutdown = 1

Список настроек opcache

  • zend_extension=opcache.so – подключение модуля расширения
  • opcache.enable=1 — включение/отключение OPcache
  • opcache.memory_consumption=512 – размер памяти для хранения кэша
  • opcache.interned_strings_buffer=512 — размер памяти для пула строк
  • opcache.max_accelerated_files=100000 — максимальное количество ключей в хэн-таблице OPcache
  • opcache.max_wasted_percentage=1 – максимальный процент потерянной памяти, после которой планируется перезапуск
  • opcache.validate_timestamps=1 — включение возможности обнуления вручную или рестартом веб-сервера(регулируется opcache.validate_timestamps)
  • opcache.revalidate_freq=0 — промежуток, через который будет выполнена проверка изменения временных меток, для поддержания актуальности данных, 0 — постоянная проверка, любое другое значение количество секунд
  • opcache.fast_shutdown=1 — если параметр включен, то будет использована быстрая последовательность перезагрузки, при которой не происходит очистки всех выделенных блоков памяти.
  • opcache.save_comments=1 — если выключено, все комментарии будут отброшены из кеша опкодов для минимизации размера кода.
  • opcache.load_comments=1 — если выключено, то комментарии PHPDoc не будут загружаться из общей памяти.
  • opcache.blacklist_filename=/etc/php.d/opcache*.blacklist — местоположение списка php файлов, который OPcache должен пропускать. Файл содержит имена файлов, которые не нужно оптимизировать, по одной записи на строку. Допустимы шаблоны поиска и префиксы.

Строки, начинающиеся с точки с запятой игнорируются.

Резюмируем: 

На ваших прод серверах компонент Opcache должен быть включен обязательно. Это значительно сэкономит ресурсы сервера и ускорит время обработки запросов!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *