OPcache is a code caching module, which improves PHP performance. It uses shared memory to store precompiled script bytecode, as a result there is no need for PHP to load and parse scripts on every request. OPcache is bundled with PHP starting from 5.5.0. The module is also available in PECL for PHP 5.2-5.4. By using optimised OPcache settings, you can significantly improve the performance of your Magento website. In this post we will show you how to do this.
First of all you should pay your attention to Zend Opcache formerly known as Zend Optimizer+. Being an open source component of Zend Server, Zend Opcache can enhance the performance of your e-commerce website. To speed up PHP execution, it uses optimization and opcode caching. The algorithm is standard: the module relies on shared memory to store precompiled script bytecode. Thus, the stages of reading code from a disk and compiling it on any future access are eliminated. Further performance improvements require the optimization of stored bytecode for faster execution. One of the differences between Zend Optimizer and Zend OPcache consists in their use of Zend Guard encoded files – Zend OPcache doesn’t load them. So there is Zend Guard Loader – another component, which is used in order to load encoded applications with Zend Server. Zend OPcache is actively maintained. Its latest stable version is 7.0.3.
Optimised OPcache Settings
To enhance Magento performance, you have to optimise OPcache settings. Further you can see the example of optimised OPcache settings for Magento. The PHP version is 5.5.14. Keep in mind, that you should store this file as /etc/php.d/opcache.ini
; Enable Zend OPcache extension module
; Determines if Zend OPCache is enabled
; Determines if Zend OPCache is enabled for the CLI version of PHP
; The OPcache shared memory storage size.
; The amount of memory for interned strings in Mbytes.
; The maximum number of keys (scripts) in the OPcache hash table.
; Only numbers between 200 and 100000 are allowed.
; The maximum percentage of "wasted" memory until a restart is scheduled.
; When this directive is enabled, the OPcache appends the current working
; directory to the script key, thus eliminating possible collisions between
; files with the same name (basename). Disabling the directive improves
; performance, but may break existing applications.
; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
; How often (in seconds) to check file timestamps for changes to the shared
; memory storage allocation. ("1" means validate once per second, but only
; once per request. "0" means always validate)
; Enables or disables file search in include_path optimization
; If disabled, all PHPDoc comments are dropped from the code to reduce the
;size of the optimized code.
; If disabled, PHPDoc comments are not loaded from SHM, so "Doc Comments"
; may be always stored (save_comments=1), but not loaded by applications
; that don't need them anyway.
; If enabled, a fast shutdown sequence is used for the accelerated code
; Allow file existence override (file_exists, etc.) performance feature.
; A bitmask, where each bit enables or disables the appropriate OPcache
; The location of the OPcache blacklist file (wildcards allowed).
; Each OPcache blacklist file is a text file that holds the names of files
; that should not be accelerated.
; Allows exclusion of large files from being cached. By default all files
; are cached.
; Check the cache checksum each N requests.
; The default value of "0" means that the checks are disabled.
; How long to wait (in seconds) for a scheduled restart to begin if the cache
; is not being accessed.
; OPcache error_log file name. Empty string assumes "stderr".
; All OPcache errors go to the Web server log.
; By default, only fatal errors (level 0) or errors (level 1) are logged.
; You can also enable warnings (level 2), info messages (level 3) or
; debug messages (level 4).
; Preferred Shared Memory back-end. Leave empty and let the system decide.
; Protect the shared memory from unexpected writing during script execution.
; Useful for internal debugging only.
OPcache Control Panel for the Backend
You can always make your life easier with the correct software. Since OPcache is a complex module, it can make a lot of headache. In order to save your life from unnecessary troubles you can rely on OPcache control panel for the backend of your Magento store.
With OPcache Control Panel for the Backend, you will be able to recheck and reset cache in an easy manner. It also provides the ability to compile all PHP files in app and lib directories without any troubles. In addition, you will get SVG pie charts with live reload within every 5 seconds.
Unfortunately, OPcache Control Panel for the Backend lacks APC/APCu integration. The developer of the module is looking for contributors, so you can help with the project, if you know what to do.