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
— включение/отключение OPcacheopcache.memory_consumption=512
– размер памяти для хранения кэшаopcache.interned_strings_buffer=512
— размер памяти для пула строкopcache.max_accelerated_files=100000
— максимальное количество ключей в хэн-таблице OPcacheopcache.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 должен быть включен обязательно. Это значительно сэкономит ресурсы сервера и ускорит время обработки запросов!