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相关推荐

  1. PHP5 加速模块OPcache

    PHP5.5以后内部集成了Zend Opcache功能缓存速度比APC.eAccelerator.XCache更快 因为小弟安装的LNMP环境PHP是5.4 所以直接安装 安装 yum -y inst ...

  2. PHP 缓存插件之 Zend Opcache ( 取代 APC )

    简介: Zend Opcache .APC 这都是 PHP 代码加速器,将 PHP 源代码的编译结果缓存起来,再次调用时对比时间标记,如果没有改变则使用缓存数据,免去再次解析代码的开销. APC 止步 ...

  3. zend opcache的最佳设置

    2016-01-21 在网上无意中看到的一篇文章,这哥们非常简洁地谈论了zend opcache的最佳设置,他说他为此花了大量的时间探索zend opcache的每个设置选项的细节,甚至是阅读它的源代 ...

  4. opcache php 原理_php之Opcache

    opcache的原理 1.Opcache是什么? Opcache是一种通过将解析的PHP脚本预编译的字节码(Operate Code)存放在共享内存中来避免每次加载和解析PHP脚本的开销,解析器可以直 ...

  5. php opcache 坑,PHP7 opcache缓存清理问题

    PHP7 opcache缓存清理问题 背景 OPcache通过opcode的缓存和优化,提供更快的PHP执行过程. 业务在php7环境运营时,为了提升请求的性能,在PHP7环境中配置OPcache扩展 ...

  6. php 存储多选项_php高并发之opcache详解

    客户的一台服务器,业务逻辑比较简单 .估算pv在120w左右吧,用的是阿里云2c4g的服务器.一大早就开始卡顿了,登陆服务器后查看负载到了八九十. 之后就想办法调整一下吧.突然想起某位前辈说过的:开启 ...

  7. [PHP] - 性能加速 - 开启opcache

    说明 PHP 5.5+版本以上的,可以使用PHP自带的opcache开启性能加速(默认是关闭的).对于PHP 5.5以下版本的,需要使用APC加速,这里不说明,可以自行上网搜索PHP APC加速的方法 ...

  8. php zend gua,PHP安装使用Zend Opcache扩展

    简介 Zend OPCache 的前身是Zend Optimizer + (Zend O+),于 2013年3月中旬改名为 Opcache.其通过 opcode 缓存和优化提供更快的 PHP 执行过程 ...

  9. PHP使用Zend Opcache之优化加速和缓存清理总结

    简介 字节码缓存不是php的新特性,有很多独立性的扩展可以实现缓存,比如PHP Cache(APC),eAccelerator,ionCube和XCache等等.但是到目前为止,这些独立的扩展并没有集 ...

最新文章

  1. 一个基于特征向量的近似网页去重算法——term用SVM人工提取训练,基于term的特征向量,倒排索引查询相似文档,同时利用cos计算相似度...
  2. 从限流削峰到性能优化,谈1号店抽奖系统架构实践
  3. 四十七、SQL 语法总结
  4. SAP Spartacus cost center list里通向detail页面的url生成逻辑
  5. html5 接收蓝牙广播_蓝牙定位技术浅析(化工厂应用)
  6. java中的泛型类型擦除
  7. 多线程 进度条 C# .net
  8. 408最后计算机网络题库,2021考研计算机统考408专业基础综合题库
  9. 在eclipse中使用hadoop插件
  10. 今天,你的安卓 App 崩了吗?
  11. linux salt命令 -e,Linux记录-salt命令
  12. 腾讯地图api_为你的小程序插上地图的“翅膀”,腾讯位置服务亮相阿拉丁大会...
  13. 清风老师数学建模视频课程第1讲层次分析法
  14. 阿里巴巴编码规范认证之步骤详解
  15. 一个完整的计算机系统五个基本部分组成,一个完整的计算机系统
  16. happen before 原则
  17. 0-SIM卡的迭代(SIM-USIM-eSIM-vSIM-softSIM)
  18. HTML学习记录三 :创建电子邮件链接
  19. Node.js、npm环境配置与Vue项目创建
  20. Flowable 6.6.0 BPMN用户指南 -10 流程实例迁移 - 10.1 简单示例

热门文章

  1. Nature:剖腹产到底好不好?——肠道菌群的视角
  2. 华中农大津田賢一组招植物微生物组、生物信息方向博士后
  3. Microbiome:芝麻菜中肠杆菌科主导核心微生物组并贡献抗生素抗性组(简单套路16S+meta+培养组发高分文章)
  4. react 嵌套渲染_React 中嵌套数组数据如何渲染到前端页面
  5. FutureWarning: Passing (type, 1) or ‘1type‘ it will be understood as (type, (1,)) / ‘(1,)type‘
  6. R语言PCA主成分分析(Principle Component Analysis)与线性回归结合实战
  7. R语言循环中break函数和next函数使用实战
  8. python使用pickle保存和加载机器学模型
  9. OLTP与OLAP是什么?OLTP与OLAP的主要区别是什么?
  10. DBSCAN的两个核心参数是什么?如何获取最佳参数?如何可视化获取的过程?