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

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

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

Ответ 1

Установка

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 вместо директивы "normal" extension, поскольку она влияет на фактический движок Zend (т.е. вещь, которая запускает 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():

Недействителен определенный кешированный script. Значение script будет снова проанализировано при следующем посещении.

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

Обслуживание и отчеты

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

OpCacheGUI

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

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

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

Скриншоты:

status

cached-scripts

graphs

mobilr

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

opcache-статус

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

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

Скриншот:

status

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

opcache-графический интерфейс

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

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

Скриншот:

opcache-gui-overview

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

Ответ 2

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 
;(e.g. 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, РНРипхЬ)

Ответ 3

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

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

Без opcache

При использовании этого script без 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

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

Ответ 4

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

yum install php56-opcache

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

Ответ 5

Я столкнулся с этим при настройке 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

Ответ 6

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

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

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

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

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

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

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