Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[笔记] 使用 opcache 优化生产环境PHP

[笔记] 使用 opcache 优化生产环境PHP

作者头像
码农编程进阶笔记
发布于 2021-07-20 07:53:39
发布于 2021-07-20 07:53:39
90600
代码可运行
举报
运行总次数:0
代码可运行

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

一、php.ini配置opchche示例

代码语言:javascript
代码运行次数:0
运行
复制
  1. [opcache]
  2. zend_extension=opcache.so
  3. ; 开关打开
  4. opcache.enable=
  5. opcache.enable_cli=
  6. ;共享内存大小, 酌情而定,单位 megabytes
  7. opcache.memory_consumption=
  8. ;interned string的内存大小, 也可调
  9. opcache.interned_strings_buffer=
  10. ;最大缓存的文件数目,命中率不到 % 的话, 可以试着提高这个值
  11. opcache.max_accelerated_files=
  12. ;s检查一次文件更新
  13. opcache.revalidate_freq=
  14. ;打开快速关闭, 打开这个在PHP Request Shutdown的时候 会收内存的速度会提高
  15. opcache.fast_shutdown=
  16. ;不保存文件/函数的注释
  17. opcache.save_comments=
  18. ; 是否快速关闭, 打开后在PHP Request Shutdown的时候回收内存的速度会提高
  19. opcache.fast_shutdown=

二、部分配置参数说明

  • opcache.revalidate_freq 这个配置选项用于设置缓存的过期时间,如果设置为0,每次请求时,都会检查文件是否修改,很耗资源,所以如果暂时不需要使用opcache,直接把opcache.enable设置为0即可。
  • opcache.validate_timestamps 配置为1时,会根据revalidate_freq设定的值检查更新代码;设置为0时,永不检查。

当需要一次更新大量代码的时候,可以设置为0,上传全部完成后,再设置为1。避免上传代码造成系统的不稳定。

  • opcache.max_accelerated_files 真实的取值是在质数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一个比设置值大的质数。

你可以运行 find . -type f -print | grep php | wc -l 这个命令来快速计算你的代码库中的PHP文件数。

三、推荐配置

代码语言:javascript
代码运行次数:0
运行
复制
  1. 开发模式下推荐,直接禁用opcache扩展更好
  2. opcache.revalidate_freq=0
  3. opcache.validate_timestamps=1
  4. opcache.max_accelerated_files=3000
  5. opcache.memory_consumption=192
  6. opcache.interned_strings_buffer=16
  7. opcache.fast_shutdown=1
  8. 多台机器集群模式或者代码更新频繁时推荐,可以兼顾性能,方便代码更新
  9. opcache.revalidate_freq=300
  10. opcache.validate_timestamps=1
  11. opcache.max_accelerated_files=7963
  12. opcache.memory_consumption=192
  13. opcache.interned_strings_buffer=16
  14. opcache.fast_shutdown=1
  15. 稳定项目推荐,性能最好
  16. opcache.revalidate_freq=0
  17. opcache.validate_timestamps=0
  18. opcache.max_accelerated_files=7963
  19. opcache.memory_consumption=192
  20. opcache.interned_strings_buffer=16
  21. opcache.fast_shutdown=1

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家

资料获取方式:

  1. 扫描下方二维码,后台回复关键字
  2. 点击这里直通车 直通车2
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农编程进阶笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
让子弹飞~利用OPcache扩展提升PHP7性能 | laravel篇
What is OPcache OPcache是PHP中的Zend扩展,可以大大提升PHP的性能。 OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
AlicFeng
2018/10/08
1.3K0
PHP安装配置Opcache加速你的网站
本文针对PHP5.5等高级版本,编译时需要加上--enable-opcache参数
老高的技术博客
2022/12/28
7540
PHP安装配置Opcache加速你的网站
使用Redis和opcache扩展为网站加速教程
php在执行函数最消耗时间的就是查询SQL数据库了,一般来讲一个页面的数据库查询大概在120到260次左右,使用Redis或者Memcached缓存,原理就是将php查询过的数据库缓存下来,下一次相同内容就不再查询数据库了,直接从缓存获取,极大的提高php执行效率。
Hello-1
2022/08/30
6700
使用Redis和opcache扩展为网站加速教程
编译安装PHP8.0测试版开启Opcache JIT
PHP已经进入了PHP8.0的测试研发阶段,其中就包括万众期待的PHP JIT新特性,这里我们尝新编译安装PHP8.0,并试着开启opcache中的JIT
Zach
2020/07/23
2.4K0
如何更好的使用OPcache实现性能优化
一直知道opcache可以提高PHP性能,但没有具体的关注,更多的利用其他的组件来提升系统的性能。一次无意开启了opcache之后,并随意设置了一些配置。结果导致后面在使用一个项目时,发现项目总是不会读取到最新的代码,而是隔一段时间才会执行到最新代码。排查了很久才想起来开启了opcache,于是对opcache做了一个简单的学习与总结。
兔云小新LM
2021/09/25
1.3K0
如何更好的使用OPcache实现性能优化
[PHP] opcache优化作用
1. PHP 初始化执行环节,启动 Zend 引擎,加载注册的扩展模块。 2. 初始化后读取 PHP 脚本文件,Zend 引擎对 PHP 文件进行词法分析,语法分析,生成语法树。 3. Zend 引擎编译语法树,生成 Opcode。 4. Zend 引擎执行 Opcode,返回执行结果。
唯一Chat
2021/07/29
5350
php7性能优化之opcache
最近业务有所增长,随之而来的是慢请求逐渐多了起来,在搜索php性能优化的过程中发现了opcache,相关的文章很多,但是都比较零碎,所以在此做个总结。公司当前使用的PHP版本为php7.x.x。
阿dai学长
2021/07/15
1.6K0
使用OPCache提升PHP的性能
对于 PHP 这样的解释型语言来说,每次的运行都会将所有的代码进行一次加载解析,这样一方面的好处是代码随时都可以进行热更新修改,因为我们不需要编译。但是这也会带来一个问题,那就是无法承载过大的访问量。毕竟每次加载解析再释放,都会增加 CPU 的负担,通常一台 8核16G 的服务器在2、3000并发左右 CPU 就能达到60%以上的使用率。而且如果你使用的是类似于 Laravel 这种大型的框架,效率将更加低下。这个时候,我们通常会通过增加服务器数量来做负载均衡,从而达到减轻服务器压力的效果。不过,这样做的成本又会增加许多。那么,有没有什么优化的方案呢?
硬核项目经理
2020/08/13
1.1K0
PHP5.5中的Zend OPcache加速可以代替eaccelerator
eaccelerator无法兼容php5.5.0,好在php在5.5.0默认提供了Zend OPcache,所以一直习惯eaccelerator的朋友如果要升级到php5.5.0的话,可能要暂时和eaccelerator说bye bye了。 配置Zend OPcache 一直以来都习惯用eAccelerator为php提供加速,但是目前有两个问题: eAccelerator暂时不兼容php5.5.0
星哥玩云
2022/06/30
4710
详解:PHP加速器配置神器opcache
当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁盘I/O开销,那么opcode cache的性能提升是非常有限的。但是既然opcode cache能带来CPU和内存开销的降低,这总归是好事。
用户4988085
2021/07/25
2.2K0
PHP新特性之字节码缓存和内置服务器
Zend OPcache 1).从PHP5.0//开始,内置了字节码缓存功能,名为Zend OPcache。因为PHP是解释性语言,PHP解释器执行PHP脚本时会解析PHP脚本代码,生成一系列的Zend操作码,然后执行字节码,每次的HTTP请求都是这样,会消耗很多资源,使用字节码缓存可以缓存预先编译的字节码,减少响应时间,降低系统资源的压力。 启用Zend OPcache 默认情况之下,Zend OPcache是没有启动的。如果是自己编译PHP,执行的时候命令必须包含以下选项:
用户2323866
2021/06/29
6690
低成本高收益的PHP性能提升方案
OPcache通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
Jayjiao
2018/08/28
6010
CentOS7安装NextCloud
为了您服务的安全和性能, 请将所有设置配置正确. 我们将会进行一些自动化检查以帮助您完成这项工作. 详情请查看 "小提示" 部分及相关文档.
孤鸿
2022/10/04
7080
PHP Opcache工作原理
在理解 OPCache 功能之前,我们有必要先理解PHP-FPM + Nginx 的工作机制,以及PHP脚本解释执行的机制。
猿哥
2019/11/10
1.7K0
PHP开启opcache提升代码性能
配置指令如下: [opcache] zend_extension=opcache.so opcache.enable_cli=1 ;共享内存大小, 这个根据你们的需求可调 opcache.memory_consumption=256 ;interned string的内存大小, 也可调 opcache.interned_strings_buffer=8 ;最大缓存的文件数目 opcache.max_accelerated_files=4000 ;60s检查一次文件更新 opcache.reval
luxixing
2019/05/30
8890
CentOS 6.5下PHP 5.6编译安装
编译前执行下列命令 sh#添加组 groupadd www #添加php-fpm用户 useradd -c php-fpm-user -g www -M php-fpm # c和c++编译器 yum install -y gcc gcc-c++ # PHP扩展依赖 yum install -y libxml2-devel openssl-devel libcurl-devel libjpeg-devel libpng-devel libicu-devel openldap-devel 编译指令 prefi
luxixing
2019/05/28
7500
AppNode面板成功安装Nextcloud后出现安全警告解决办法 原创 PHP 配置
本文针对通过AppNode面板网站管理环境成功安装Nextcloud后出现安全警告解决办法; image.png 首先通过网站管理>建站市场 下载Nextcloud程序: image.png 访问域名按照步骤成功安装Nextcloud后出现如下图所示安全警告: 第一条:PHP 的设置似乎有问题, 无法获取系统环境变量. 使用 getenv(\"PATH\") 测试时仅返回空结果. 可通过AppNode网站管理>PHP>环境变量 新增FastCGI环境变量即可,配置如下: env[HOSTNAME
奇梦
2018/07/18
1.4K0
PHP5.4.36中APC与APCu的对比与感觉
APC全称Alternative PHP Cache,可选php缓存,包括opcache及用户变量缓存。
星哥玩云
2022/07/04
5950
PHP7.0正式版编译安装升级及WordPress问题解决分享
盼望以久的 PHP 7.0 正式版,终于在今天发布了! 官方给出的新特性如下: PHP 7.0.0 comes with new version of the Zend Engine with fea
张戈
2018/03/21
1.1K0
PHP7.0正式版编译安装升级及WordPress问题解决分享
PHP - 性能优化 - 开启Opcache
对于PHP、Python属于解释型语言,不产生机器码,而是产生中间码(中间码是不能直接执行,这个中间码只有解释器可以识别到,中间码要靠解析器来进行执行) PHP的解析器是Zend,PHP使用Zend引擎,中间码我们也称作为操作码(opcode)
九霄道长
2021/03/02
1.5K0
相关推荐
让子弹飞~利用OPcache扩展提升PHP7性能 | laravel篇
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验