Как использовать PHP OPCache?

PHP 5.5 был выпущен, и в нем появился новый модуль кэширования кода под названием OPCache, но для него нет никакой документации.

Итак, где это документация для него и как я могу использовать OPcache?

Монтаж

OpCache скомпилирован по умолчанию на PHP5.5 +. Однако по умолчанию он отключен. Чтобы начать использовать OpCache в PHP5.5 +, вам сначала нужно включить его. Для этого вам нужно будет сделать следующее.

Добавьте следующую строку в ваш php.ini :

 zend_extension=/full/path/to/opcache.so (nix) zend_extension=C:\path\to\php_opcache.dll (win) 

Обратите внимание, что когда путь содержит пробелы, вы должны заключить его в кавычки:

 zend_extension="C:\Program Files\PHP5.5\ext\php_opcache.dll" 

Также обратите внимание, что вам нужно будет использовать директиву zend_ extension директиву «нормального» extension поскольку она влияет на фактический движок Zend (т. zend_ extension то, что запускает PHP).

Применение

В настоящее время существует четыре функции, которые вы можете использовать:

opcache_get_configuration() :

Возвращает массив, содержащий используемую в данный момент конфигурацию OpCache. Сюда входят все настройки ini, а также информация о версии и файлы с черным списком.

 var_dump(opcache_get_configuration()); 

opcache_get_status() :

Это вернет массив с информацией о текущем состоянии кеша. Эта информация будет включать такие вещи, как: состояние, в котором находится кеш (включен, перезапуск, полный и т. Д.), Использование памяти, хиты, промахи и еще одна полезная информация. Он также будет содержать кэшированные скрипты.

 var_dump(opcache_get_status()); 

opcache_reset() :

Сбрасывает весь кеш. Значение всех возможных кешированных скриптов будет проанализировано снова при следующем посещении.

 opcache_reset(); 

opcache_invalidate() :

Недействительный конкретный кешированный скрипт. Смысл сценария будет снова проанализирован при следующем посещении.

 opcache_invalidate('/path/to/script/to/invalidate.php', true); 

Техническое обслуживание и отчеты

Существуют некоторые графические интерфейсы, созданные для поддержки OpCache и создания полезных отчетов. Эти инструменты используют вышеупомянутые функции.

OpCacheGUI

Отказ от ответственности Я являюсь автором этого проекта

Особенности:

  • Статус OpCache
  • Конфигурация OpCache
  • Статистика OpCache
  • Перезагрузка OpCache
  • Обзор кэшированных скриптов
  • Недействительность кэшированных скриптов
  • многоязычный
  • Поддержка мобильных устройств
  • Блестящие графики

Скриншоты:

положение дел

кэшированные-скрипты

диаграммы

mobilr

URL: https://github.com/PeeHaa/OpCacheGUI

opcache-статус

Особенности:

  • Статус OpCache
  • Конфигурация OpCache
  • Статистика OpCache
  • Обзор кэшированных скриптов
  • Отдельный файл

Скриншот:

положение дел

URL: https://github.com/rlerdorf/opcache-status

opcache-гуй

Особенности:

  • Статус OpCache
  • Конфигурация OpCache
  • Статистика OpCache
  • Перезагрузка OpCache
  • Обзор кэшированных скриптов
  • Недействительность кэшированных скриптов
  • Автоматическое обновление

Скриншот:

opcache-гуй-обзор

URL: https://github.com/amnuts/opcache-gui

OPcache заменяет APC

Поскольку OPcache предназначен для замены модуля APC, невозможно запустить их параллельно в PHP. Это отлично подходит для кэширования PHP-кода, так как не влияет на то, как вы пишете код.

Однако это означает, что если вы используете APC для хранения других данных (через apc_store() ), вы не сможете это сделать, если решите использовать OPCache.

Вам нужно будет использовать другую библиотеку, такую ​​как APCu или Yac, которые хранят данные в общей памяти PHP или переключаются на использование чего-то вроде memcached, который хранит данные в памяти в отдельном процессе для PHP.

Кроме того, OPcache не имеет эквивалента индикатора прогресса загрузки, присутствующего в APC. Вместо этого вы должны использовать Прогресс загрузки сеанса .

Настройки для OPcache

Документацию по OPcache можно найти здесь со всеми перечисленными здесь параметрами конфигурации. Рекомендуемые настройки:

 ; Sets how much memory to use opcache.memory_consumption=128 ;Sets how much memory should be used by OPcache for storing internal strings ;(eg classnames and the files they are contained in) opcache.interned_strings_buffer=8 ; The maximum number of files OPcache will cache opcache.max_accelerated_files=4000 ;How often (in seconds) to check file timestamps for changes to the shared ;memory storage allocation. opcache.revalidate_freq=60 ;If enabled, a fast shutdown sequence is used for the accelerated code ;The fast shutdown sequence doesn't free each allocated block, but lets ;the Zend Engine Memory Manager do the work. opcache.fast_shutdown=1 ;Enables the OPcache for the CLI version of PHP. opcache.enable_cli=1 

Если вы используете какую-либо библиотеку или код, который использует аннотации кода, вы должны включить сохранение комментариев:

 opcache.save_comments=1 

Если отключено, все комментарии PHPDoc удаляются из кода, чтобы уменьшить размер оптимизированного кода. Отключение «комментариев Doc» может нарушить некоторые существующие приложения и фреймворки (например, Doctrine, ZF2, PHPUnit)

Я собираюсь бросить свои два цента за то, что я использую opcache.

Я создал обширную структуру с большим количеством полей и методов проверки и перечислений, чтобы иметь возможность разговаривать с моей базой данных.

Без opcache

При использовании этого сценария без opcache, и я нажимаю 9000 запросов в 2,8 секунды на сервер Apache, он максимизирует скорость 90-100% в течение 70-80 секунд, пока не догонит все запросы.

Total time taken: 76085 milliseconds(76 seconds)

С включенным opcache

С включенным opcache он работает на 25-30% процессорного времени в течение примерно 25 секунд и никогда не пропускает 25% использования процессора.

Total time taken: 26490 milliseconds(26 seconds)

Я сделал файл черного списка opcache, чтобы отключить кеширование всего, кроме рамки, которая все статична и не нуждается в изменении функциональности. Я выбираю явно только файлы фреймворка, чтобы я мог развиваться, не беспокоясь о перезагрузке / проверке файлов кеша. Все кэширование сохраняет секунду в общей сложности запросов 25546 milliseconds

Это значительно расширяет объем данных / запросов, которые я могу обрабатывать в секунду, даже если сервер не разбивает пот.

С PHP 5.6 на Amazon Linux (должно быть то же самое на RedHat или CentOS):

 yum install php56-opcache 

а затем перезапустите apache.

Я столкнулся с этим при создании moodle. Я добавил следующие строки в файл php.ini.

 zend_extension=C:\xampp\php\ext\php_opcache.dll [opcache] opcache.enable = 1 opcache.memory_consumption = 128 opcache.max_accelerated_files = 4000 opcache.revalidate_freq = 60 ; Required for Moodle opcache.use_cwd = 1 opcache.validate_timestamps = 1 opcache.save_comments = 1 opcache.enable_file_override = 0 ; If something does not work in Moodle ;opcache.revalidate_path = 1 ; May fix problems with include paths ;opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487 ; Experimental for Moodle 2.6 and later ;opcache.fast_shutdown = 1 ;opcache.enable_cli = 1 ; Speeds up CLI cron ;opcache.load_comments = 0 ; May lower memory use, might not be compatible with add-ons and other apps extension=C:\xampp\php\ext\php_intl.dll [intl] intl.default_locale = en_utf8 intl.error_level = E_WARNING 

intl -> http://php.net/manual/en/book.intl.php

С выпуском Ubuntu 14.04 и распространением PHP 5.5 произойдет переход от альтернативного кэша производительности (APC) и к новому встроенному OPcache PHP.

Это логичный шаг, который кажется сущим для любого интерпретируемого языка. Поскольку веб-сайты становятся все более сложными при запуске многих процессов, кэширование кода операции стало необходимостью – к счастью, его просто реализовать.

вам нужно сделать, чтобы настроить OPcache, чтобы внести изменения в файл php.ini на вашем сервере.

Установите следующую настройку в PHP: введите описание изображения здесь

Затем настройте следующие параметры:

введите описание изображения здесь

Чтобы прочитать полную статью, нажмите здесь ..