Был выпущен PHP 5.5, в котором есть новый модуль кэширования кода под названием OPCache, но, похоже, для него нет никакой документации.
Так где же к нему документация и как использовать 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 (то есть на то, что запускает 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-status
Функции:
Скриншот:
URL: https://github.com/rlerdorf/opcache-status
opcache-gui
Функции:
Скриншот:
URL: https://github.com/amnuts/opcache-gui
zend_extension=C:\path\to\php_opcache.dll
но файл есть, что случилось?
- person davejal; 06.06.2017
Xdebug
, оно ДОЛЖНО быть загружено ПОСЛЕ расширения OpCache
.
- person Yousha Aleayoub; 18.09.2017
Поскольку 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
;(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 удаляются из кода, чтобы уменьшить размер оптимизированного кода. Отключение «Комментарии к документу» может нарушить работу некоторых существующих приложений и фреймворков (например, Doctrine, ZF2, PHPUnit).
opcache.save_comments=1
также должен быть установлен для Symfony2.
- person COil; 07.07.2015
opcache.fast_shutdown=0
, пока эта ошибка не будет исправлена: github.com/zendtech/ZendOptimizerPlus/issues/146
- person Yousha Aleayoub; 18.09.2017
Я собираюсь вложить свои два цента за то, что использую 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
Это значительно увеличивает количество данных / запросов, которые я могу обрабатывать в секунду, даже не вызывая у сервера проблем.
zend_extension=php_opcache.dll; opcache.memory_consumption=128; opcache.interned_strings_buffer=8; opcache.max_accelerated_files=4000; opcache.revalidate_freq=60; opcache.fast_shutdown=1; opcache.enable_cli=1; opcache.blacklist_filename="C:\xampp\php\cfg\opcache.blacklist;
Просто замените; с вводом в ini-файле. Но это то, что я использовал. в основном вещи по умолчанию
- person Tschallacka; 20.02.2015
opcache.revalidate_freq=60;
определяет, как долго файл может храниться в памяти в секундах. когда время истекло, он перекомпилирует файл.
- person Tschallacka; 23.02.2015
opcache.revalidate_freq
контролирует, как часто сценарий проверяется на наличие изменений (в зависимости от того, изменилась ли его временная метка). Поэтому, если временная метка сценария остается такой же, как и при последней компиляции, она не будет перекомпилирована. Все это предполагает, что вы не изменили параметр opcache.validate_timestamps
, который включен по умолчанию.
- person jjlin; 12.08.2015
opcache.validate_timestamps
включен по умолчанию, т.е.opcache.validate_timestamps=1
, вы имеете в виду, что opcache.revalidate_freq
проверяет только то, что метка времени менялась каждые 60 секунд?
- person Motivated; 05.12.2020
С 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 < / а>
opcache.fast_shutdown = 0
github.com/zendtech/ZendOptimizerPlus/issues/146
- person Yousha Aleayoub; 18.09.2017