php7开启opcache,让php性能快速提升

简介:

OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。

PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2,5.3 和 5.4 版本可以使用 » PECL 扩展中的 OPcache 库。

大概的意思讲解:

没有开启之前每次都需要编译php脚本,这样cup和内存被消耗,Opcode cache 的目地是避免重复编译,减少 CPU 和内存开销。

也就是系统自动判断代码是否发生了改动,如果没有就没有必要再次编译了,直接从内存里面获取,减少了步骤,把预编译的结果保存起来了。

安装:

yum install php73w-opcache.x86_64 #根据自己的系统和php版本进行命令调整


然后修改php.ini配置相关的opcache:

[Zend Opcache]
;粗枝大叶的你不要忘记了引入扩展文件哦
zend_extension=/这里有个马赛克/73/lib/php/extensions/你的目录/opcache.so 
;启动操作码缓存
opcache.enable = 1 
;共享内存大小,单位为MB
opcache.memory_consumption=128
;存储临时字符串缓存大小,单位为MB,PHP5.3.0以前会忽略此项配置
opcache.interned_strings_buffer=8
;缓存文件数最大限制,命中率不到100%,可以试着提高这个值
opcache.max_accelerated_files=4000
;一定时间内检查文件的修改时间, 这里设置检查的时间周期, 默认为 2, 单位为秒
opcache.revalidate_freq=60
;开启快速停止续发事件,依赖于Zend引擎的内存管理模块,一次释放全部请求变量的内存,而不是依次释放内存块
opcache.fast_shutdown=1
;针对支持CLI版本PHP启动操作码缓存 一般被用来测试和调试
opcache.enable_cli=1


以上配置是根据手册里面推荐的性能配置:


opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1

还有很多配置选择,上面这些是主要的,可以参考官网手册:https://www.php.net/manual/zh/opcache.configuration.php


配置了之后看phpinfo可以看到信息:

微信截图_20200430142237.png微信截图_20200430142252.png


opcache仅有几个函数,使用起来很方便:

$reset = opcache_reset();//所有的脚本将会重新载入并且在下次被点击的时候重新解析。

$configuration = opcache_get_configuration();//获取当前的配置

$compile_file= opcache_compile_file(__DIR__.'/a.php');//— 无需运行,即可编译并缓存 PHP 脚本

$invalidate = opcache_invalidate(__DIR__.'/test.php',true);//该函数的作用是使得指定脚本的字节码缓存失效。 如果 force 没有设置或者传入的是 FALSE,那么只有当脚本的修改时间 比对应字节码的时间更新,脚本的缓存才会失效

$get_status=opcache_get_status(true);//获取缓存的状态信息,参数为是否获取已经缓存的脚步文件信息

$is_script_cached = opcache_is_script_cached(__DIR__.'/test.php');//查询某文件是否已经被缓存到opcache了

print_r(get_defined_vars());//打印结果

结果:

[configuration] => Array    
(    
[directives] => Array    
(    
[opcache.enable] => 1    
[opcache.enable_cli] =>    
[opcache.use_cwd] => 1    
[opcache.validate_timestamps] => 1    
[opcache.validate_permission] =>    
[opcache.dups_fix] =>    
[opcache.revalidate_path] =>    
[opcache.log_verbosity_level] => 1    
[opcache.memory_consumption] => 134217728    
[opcache.interned_strings_buffer] => 8    
[opcache.max_accelerated_files] => 10000    
[opcache.max_wasted_percentage] => 0.05    
[opcache.consistency_checks] => 0    
[opcache.force_restart_timeout] => 180    
[opcache.revalidate_freq] => 2    
[opcache.preferred_memory_model] =>    
[opcache.blacklist_filename] =>    
[opcache.max_file_size] => 0    
[opcache.error_log] =>    
[opcache.protect_memory] =>    
[opcache.save_comments] => 1    
[opcache.enable_file_override] =>    
[opcache.optimization_level] => 2147401727    
[opcache.file_cache] =>    
[opcache.file_cache_only] =>    
[opcache.file_cache_consistency_checks] => 1    
)    
[version] => Array    
(    
[version] => 7.3.4    
[opcache_product_name] => Zend OPcache    
)    
[blacklist] => Array    
(    
)    
)    
[compile_file] => 1    
[invalidate] => 1    
[get_status] => Array    
(    
[opcache_enabled] => 1    
[cache_full] =>    
[restart_pending] =>    
[restart_in_progress] =>    
[memory_usage] => Array    
(    
[used_memory] => 9169936    
[free_memory] => 125041792    
[wasted_memory] => 6000    
[current_wasted_percentage] => 0.0044703483581543    
)    
[interned_strings_usage] => Array    
(    
[buffer_size] => 6291008    
[used_memory] => 269904    
[free_memory] => 6021104    
[number_of_strings] => 5831    
)    
[opcache_statistics] => Array    
(    
[num_cached_scripts] => 2    
[num_cached_keys] => 5    
[max_cached_keys] => 16229    
[hits] => 3    
[start_time] => 1593172671    
[last_restart_time] => 1593174871    
[oom_restarts] => 0    
[hash_restarts] => 0    
[manual_restarts] => 23    
[misses] => 5    
[blacklist_misses] => 0    
[blacklist_miss_ratio] => 0    
[opcache_hit_rate] => 37.5    
)    
[scripts] => Array    
(    
[D:\phpstudy_pro\WWW\test\a.php] => Array    
(    
[full_path] => D:\phpstudy_pro\WWW\test\a.php    
[hits] => 0    
[memory_consumption] => 1872    
[last_used] => Fri Jun 26 20:37:01 2020    
[last_used_timestamp] => 1593175021    
[timestamp] => 1593173159    
)    
[D:\phpstudy_pro\WWW\test\test.php] => Array    
(    
[full_path] => D:\phpstudy_pro\WWW\test\test.php    
[hits] => 0    
[memory_consumption] => 1608    
[last_used] => Fri Jun 26 20:37:01 2020    
[last_used_timestamp] => 1593175021    
[timestamp] => 0    
)    
)    
)    
[is_script_cached] =>


评论/留言