What is OPcache
What is OPcache
OPcache
是PHP中的Zend扩展,可以大大提升PHP的性能。
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
Judge whether it has been extended OPcache
➜ ~ php -m | grep OPcache
Zend OPcache
Zend OPcache
倘若没有开启的话,可以在php.ini配置中开启
/home/samego/service/php7.2/php.ini➜ ~ echo zend_extension="opcache.so" >> /home/samego/service/php7.2/php.ini
About OPcache configure
接下来,我们需要在 PHP 的配置文件中启用 OPcache(默认是关闭的):
opcache.enable=1
下面我们继续对 OPcache 进行一些优化配置:
opcache.memory_consumption=512
这个配置表示你想要分配给 OPcache 的内存空间(单位:MB),设置一个大于 64 的值即可。
opcache.interned_strings_buffer=64
这个配置表示你想要分配给实际字符串的空间(单位:MB),设置一个大于 16 的值即可。
opcache.max_accelerated_files=32531
这个配置表示可以缓存多少个脚本,将这个值尽可能设置为与项目包含的脚本数接近(或更大)。
opcache.validate_timestamps=0
改配置值用于重新验证脚本,如果设置为 0(性能最佳),需要手动在每次 PHP 代码更改后手动清除 OPcache。如果你不想要手动清除,可以将其设置为 1 并通过 opcache.revalidate_freq 配置重新验证间隔,这可能会消耗一些性能,因为需要每隔 x 秒检查更改。
opcache.save_comments=1
这个配置会在脚本中保留注释,我推荐开启该选项,因为一些库依赖于这个配置,并且我也找不出什么关闭它的好处。
opcache.fast_shutdown=0
快速关闭会给一个更快速清理内存的机制,不过,在我的基准测试中,更慢一些,可能这会应用带来一些性能提升,但是你需要自己去尝试。
所以,最终的配置优化长这样:
opcache.enable=1
opcache.memory_consumption=512
opcache.interned_strings_buffer=64
opcache.max_accelerated_files=32531
opcache.validate_timestamps=0
opcache.save_comments=1
opcache.fast_shutdown=0
你可以使用这些配置值进行实验,具体配置值取决于你的应用大小和服务器配置。
Laravel OPcache
install
➜ ~ composer require appstract/laravel-opcache
configure
➜ ~ php artisan vendor:publish --provider="Appstract\Opcache\OpcacheServiceProvider" --tag="config"
- command
# Clear OPcache:
➜ ~ php artisan opcache:clear# Show OPcache config:
➜ ~ php artisan opcache:config# Show OPcache status:
➜ ~ php artisan opcache:status# Pre-compile your application code:
➜ ~ php artisan opcache:optimize
拭目以待的场景测试
个人比较喜欢数据说话
场景:(1)请求GET接口 (2)测试次数10 (3)并发数为100
case non-extension
1000个请求,花费32.32秒,每秒30.94个请求
Transactions: 1000 hits Availability: 100.00 % Elapsed time: 32.32 secs Data transferred: 0.97 MB Response time: 0.32 secs Transaction rate: 30.94 trans/sec Throughput: 0.03 MB/sec Concurrency: 9.96 Successful transactions: 1000 Failed transactions: 0 Longest transaction: 0.44 Shortest transaction: 0.11
case had extend
1000个请求,花费2.94秒,每秒340.14个请求
Transactions: 1000 hits
Availability: 100.00 %
Elapsed time: 2.94 secs
Data transferred: 0.97 MB
Response time: 0.03 secs
Transaction rate: 340.14 trans/sec
Throughput: 0.33 MB/sec
Concurrency: 9.86
Successful transactions: 1000
Failed transactions: 0
Longest transaction: 0.29
Shortest transaction: 0.01
看到这组数据,我甚是高兴,无比的喜悦。在性能方面,形成如此鲜明的对比,我二话不说~OPcache is right
What is OPcache相关推荐
- PHP5 加速模块OPcache
PHP5.5以后内部集成了Zend Opcache功能缓存速度比APC.eAccelerator.XCache更快 因为小弟安装的LNMP环境PHP是5.4 所以直接安装 安装 yum -y inst ...
- PHP 缓存插件之 Zend Opcache ( 取代 APC )
简介: Zend Opcache .APC 这都是 PHP 代码加速器,将 PHP 源代码的编译结果缓存起来,再次调用时对比时间标记,如果没有改变则使用缓存数据,免去再次解析代码的开销. APC 止步 ...
- zend opcache的最佳设置
2016-01-21 在网上无意中看到的一篇文章,这哥们非常简洁地谈论了zend opcache的最佳设置,他说他为此花了大量的时间探索zend opcache的每个设置选项的细节,甚至是阅读它的源代 ...
- opcache php 原理_php之Opcache
opcache的原理 1.Opcache是什么? Opcache是一种通过将解析的PHP脚本预编译的字节码(Operate Code)存放在共享内存中来避免每次加载和解析PHP脚本的开销,解析器可以直 ...
- php opcache 坑,PHP7 opcache缓存清理问题
PHP7 opcache缓存清理问题 背景 OPcache通过opcode的缓存和优化,提供更快的PHP执行过程. 业务在php7环境运营时,为了提升请求的性能,在PHP7环境中配置OPcache扩展 ...
- php 存储多选项_php高并发之opcache详解
客户的一台服务器,业务逻辑比较简单 .估算pv在120w左右吧,用的是阿里云2c4g的服务器.一大早就开始卡顿了,登陆服务器后查看负载到了八九十. 之后就想办法调整一下吧.突然想起某位前辈说过的:开启 ...
- [PHP] - 性能加速 - 开启opcache
说明 PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的).对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法 ...
- php zend gua,PHP安装使用Zend Opcache扩展
简介 Zend OPCache 的前身是Zend Optimizer + (Zend O+),于 2013年3月中旬改名为 Opcache.其通过 opcode 缓存和优化提供更快的 PHP 执行过程 ...
- PHP使用Zend Opcache之优化加速和缓存清理总结
简介 字节码缓存不是php的新特性,有很多独立性的扩展可以实现缓存,比如PHP Cache(APC),eAccelerator,ionCube和XCache等等.但是到目前为止,这些独立的扩展并没有集 ...
最新文章
- 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度...
- 从限流削峰到性能优化,谈1号店抽奖系统架构实践
- 四十七、SQL 语法总结
- SAP Spartacus cost center list里通向detail页面的url生成逻辑
- html5 接收蓝牙广播_蓝牙定位技术浅析(化工厂应用)
- java中的泛型类型擦除
- 多线程 进度条 C# .net
- 408最后计算机网络题库,2021考研计算机统考408专业基础综合题库
- 在eclipse中使用hadoop插件
- 今天,你的安卓 App 崩了吗?
- linux salt命令 -e,Linux记录-salt命令
- 腾讯地图api_为你的小程序插上地图的“翅膀”,腾讯位置服务亮相阿拉丁大会...
- 清风老师数学建模视频课程第1讲层次分析法
- 阿里巴巴编码规范认证之步骤详解
- 一个完整的计算机系统五个基本部分组成,一个完整的计算机系统
- happen before 原则
- 0-SIM卡的迭代(SIM-USIM-eSIM-vSIM-softSIM)
- HTML学习记录三 :创建电子邮件链接
- Node.js、npm环境配置与Vue项目创建
- Flowable 6.6.0 BPMN用户指南 -10	流程实例迁移 - 10.1	简单示例
热门文章
- Nature:剖腹产到底好不好?——肠道菌群的视角
- 华中农大津田賢一组招植物微生物组、生物信息方向博士后
- Microbiome:芝麻菜中肠杆菌科主导核心微生物组并贡献抗生素抗性组(简单套路16S+meta+培养组发高分文章)
- react 嵌套渲染_React 中嵌套数组数据如何渲染到前端页面
- FutureWarning: Passing (type, 1) or ‘1type‘ it will be understood as (type, (1,)) / ‘(1,)type‘
- R语言PCA主成分分析(Principle Component Analysis)与线性回归结合实战
- R语言循环中break函数和next函数使用实战
- python使用pickle保存和加载机器学模型
- OLTP与OLAP是什么?OLTP与OLAP的主要区别是什么?
- DBSCAN的两个核心参数是什么?如何获取最佳参数?如何可视化获取的过程?