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
Отказ от ответственности Я являюсь автором этого проекта
Особенности:
Скриншоты:
URL: https://github.com/PeeHaa/OpCacheGUI
opcache-статус
Особенности:
Скриншот:
URL: https://github.com/rlerdorf/opcache-status
opcache-гуй
Особенности:
Скриншот:
Поскольку OPcache предназначен для замены модуля APC, невозможно запустить их параллельно в PHP. Это отлично подходит для кэширования PHP-кода, так как не влияет на то, как вы пишете код.
Однако это означает, что если вы используете APC для хранения других данных (через apc_store()
), вы не сможете это сделать, если решите использовать OPCache.
Вам нужно будет использовать другую библиотеку, такую как APCu или Yac, которые хранят данные в общей памяти PHP или переключаются на использование чего-то вроде memcached, который хранит данные в памяти в отдельном процессе для PHP.
Кроме того, OPcache не имеет эквивалента индикатора прогресса загрузки, присутствующего в APC. Вместо этого вы должны использовать Прогресс загрузки сеанса .
Документацию по 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
С выпуском Ubuntu 14.04 и распространением PHP 5.5 произойдет переход от альтернативного кэша производительности (APC) и к новому встроенному OPcache PHP.
Это логичный шаг, который кажется сущим для любого интерпретируемого языка. Поскольку веб-сайты становятся все более сложными при запуске многих процессов, кэширование кода операции стало необходимостью – к счастью, его просто реализовать.
вам нужно сделать, чтобы настроить OPcache, чтобы внести изменения в файл php.ini на вашем сервере.
Установите следующую настройку в PHP:
Затем настройте следующие параметры:
Чтобы прочитать полную статью, нажмите здесь ..