-
-
Save rohankhudedev/1a9c0a3c7fb375f295f9fc11aeb116fe to your computer and use it in GitHub Desktop.
[opcache] | |
; Determines if Zend OPCache is enabled | |
opcache.enable=1 | |
; Determines if Zend OPCache is enabled for the CLI version of PHP | |
;opcache.enable_cli=1 | |
; The OPcache shared memory storage size. | |
opcache.memory_consumption=512 | |
; The amount of memory for interned strings in Mbytes. | |
opcache.interned_strings_buffer=64 | |
; The maximum number of keys (scripts) in the OPcache hash table. | |
; Only numbers between 200 and 1000000 are allowed. | |
;If you have multiple PHP sites on the server then consider the value 130986 | |
; for magento 2, keep 65406 | |
opcache.max_accelerated_files=50000 | |
; The maximum percentage of "wasted" memory until a restart is scheduled. | |
opcache.max_wasted_percentage=15 | |
; 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. | |
;opcache.use_cwd=1 | |
; When disabled, you must reset the OPcache manually or restart the | |
; webserver for changes to the filesystem to take effect. | |
; For Development / testing, keep 1 | |
; For performance / production, keep 0 | |
opcache.validate_timestamps=0 | |
;opcache.revalidate_freq How often in seconds should the code | |
;cache expire and check if your code has changed. 0 means it | |
;checks your PHP code every single request IF YOU HAVE | |
;opcache.validate_timestamps ENABLED. opcache.validate_timestamps | |
;should not be enabled by default, as long as it's disabled then any value for opcache. | |
;revalidate_freq will basically be ignored. You should really only ever enable | |
;this during development, you don't really want to enable this setting for a production application. | |
opcache.revalidate_freq=0 | |
; Enables or disables file search in include_path optimization | |
;opcache.revalidate_path=0 | |
; If disabled, all PHPDoc comments are dropped from the code to reduce the | |
; size of the optimized code. | |
opcache.save_comments=1 | |
; If enabled, a fast shutdown sequence is used for the accelerated code | |
; Depending on the used Memory Manager this may cause some incompatibilities. | |
opcache.fast_shutdown=1 | |
; Allow file existence override (file_exists, etc.) performance feature. | |
;opcache.enable_file_override=0 | |
; A bitmask, where each bit enables or disables the appropriate OPcache | |
; passes | |
;opcache.optimization_level=0xffffffff | |
;opcache.inherited_hack=1 | |
;opcache.dups_fix=0 | |
; 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. The file format is to add each filename | |
; to a new line. The filename may be a full path or just a file prefix | |
; (i.e., /var/www/x blacklists all the files and directories in /var/www | |
; that start with 'x'). Line starting with a ; are ignored (comments). | |
;opcache.blacklist_filename= | |
; Allows exclusion of large files from being cached. By default all files | |
; are cached. | |
;opcache.max_file_size=0 | |
; Check the cache checksum each N requests. | |
; The default value of "0" means that the checks are disabled. | |
;opcache.consistency_checks=0 | |
; How long to wait (in seconds) for a scheduled restart to begin if the cache | |
; is not being accessed. | |
;opcache.force_restart_timeout=180 | |
; OPcache error_log file name. Empty string assumes "stderr". | |
;opcache.error_log= | |
; 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). | |
;opcache.log_verbosity_level=1 | |
; Preferred Shared Memory back-end. Leave empty and let the system decide. | |
;opcache.preferred_memory_model= | |
; Protect the shared memory from unexpected writing during script execution. | |
; Useful for internal debugging only. | |
;opcache.protect_memory=0 | |
; Allows calling OPcache API functions only from PHP scripts which path is | |
; started from specified string. The default "" means no restriction | |
;opcache.restrict_api= | |
; Mapping base of shared memory segments (for Windows only). All the PHP | |
; processes have to map shared memory into the same address space. This | |
; directive allows to manually fix the "Unable to reattach to base address" | |
; errors. | |
opcache.mmap_base=0x20000000 | |
; Enables and sets the second level cache directory. | |
; It should improve performance when SHM memory is full, at server restart or | |
; SHM reset. The default "" disables file based caching. | |
;opcache.file_cache= | |
; Enables or disables opcode caching in shared memory. | |
;opcache.file_cache_only=0 | |
; Enables or disables checksum validation when script loaded from file cache. | |
;opcache.file_cache_consistency_checks=1 | |
; Implies opcache.file_cache_only=1 for a certain process that failed to | |
; reattach to the shared memory (for Windows only). Explicitly enabled file | |
; cache is required. | |
opcache.file_cache_fallback=1 | |
; Enables or disables copying of PHP code (text segment) into HUGE PAGES. | |
; This should improve performance, but requires appropriate OS configuration. | |
;opcache.huge_code_pages=1 | |
; Validate cached file permissions. | |
; opcache.validate_permission=0 | |
; Prevent name collisions in chroot'ed environment. | |
; opcache.validate_root=0 |
opcache.validate_timestamps=0 on IIS and php 7.4 gives me problems since it will not update the php content
opcache.validate_timestamps=0 on IIS and php 7.4 gives me problems since it will not update the php content
Its already stated in the config file:
; When disabled, you must reset the OPcache manually or restart the
; webserver for changes to the filesystem to take effect.
excellent config, thanks you
Thx, its noticible the performance boost
Check it out to opcache.fast_shutdown
config. This directive has been removed in PHP 7.2.0. A variant of the fast shutdown sequence has been integrated into PHP and will be automatically used if possible. Best regards. https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.fast-shutdown
When using PHP on a windows platform and enabling opcache, you might run into occasional 500 errors. These will appear to show up entirely random.
When this happens, your windows Event log (Windows Logs/Application) will show (probably multiple) entries from Zend OPcache with Event ID 487. Further information will state the following error message: "Base address marks unusable memory region".
This issue can be resolved by adding the following to your php.ini:
opcache.mmap_base = 0x20000000
Unfortunately I do not know the significance of the value "0x20000000". I can only tell you that this value works to solve the problem (Tried and tested) reference
just to tune ret's
Hi
Hey @rohankhudedev
Thanks for sharing this, I'm using this config without any problems like months.
Another new thing after PHP v8 upper is the OPCache Jit, Can you please add the best values for this one too on the config file?
Regards.
Thanks for sharing!
Thanks guys!
Here in a script:
#!/bin/sh
#source: https://gist.github.com/rohankhudedev/1a9c0a3c7fb375f295f9fc11aeb116f
#TODO: change the php_file_path and run
php_file_path=/etc/php/8.2/cli/php.ini
n2 sed -i '/opcache.enable/c opcache.enable=1' $php_file_path
n2 sed -i '/opcache.memory_consumption/c opcache.memory_consumption=512' $php_file_path
n2 sed -i '/opcache.interned_strings_buffer/c opcache.interned_strings_buffer=64' $php_file_path
n2 sed -i '/opcache.max_accelerated_files/c opcache.max_accelerated_files=5000' $php_file_path
n2 sed -i '/opcache.max_wasted_percentage/c opcache.max_wasted_percentage=15' $php_file_path
n2 sed -i '/opcache.validate_timestamps/c opcache.validate_timestamps=0' $php_file_path
n2 sed -i '/opcache.revalidate_freq/c opcache.revalidate_freq=0' $php_file_path
n2 sed -i '/opcache.save_comments/c opcache.save_comments=1' $php_file_path
n2 sed -i '/opcache.fast_shutdown/c opcache.fast_shutdown=1' $php_file_path
n2 sed -i '/opcache.mmap_base/c opcache.mmap_base=0x20000000' $php_file_path
n2 sed -i '/opcache.file_cache_fallback/c opcache.file_cache_fallback=1' $php_file_path
systemctl restart apache2
Great config, thanks. One warning is that on a Wordpresss site or other systems with auto-updates, the opcache.validate_timestamps needs to be 1 (default) or else a third party plugin update with significant code edits will need a manual PHP service restart, showing 500 error until restarted. Set opcache.validate_timestamps=1 and a opcache.revalidate_freq=60 for a max of one minute downtime but picking up some opcache gains
When using PHP on a windows platform and enabling opcache, you might run into occasional 500 errors. These will appear to show up entirely random.
When this happens, your windows Event log (Windows Logs/Application) will show (probably multiple) entries from Zend OPcache with Event ID 487. Further information will state the following error message: "Base address marks unusable memory region".
This issue can be resolved by adding the following to your php.ini:
Unfortunately I do not know the significance of the value "0x20000000". I can only tell you that this value works to solve the problem (Tried and tested)
reference