• 售前

  • 售后

热门帖子
入门百科

PHP7怎样开启Opcode打造强横性能详解

[复制链接]
維健廣律 显示全部楼层 发表于 2021-10-25 19:57:52 |阅读模式 打印 上一主题 下一主题
前言
鸟哥在博客中说,提高PHP 7性能的几个tips,第一条就是开启opcache:
记得启用Zend Opcache, 由于PHP7即使不启用Opcache速度也比PHP-5.6启用了Opcache快, 以是之前测试时期就发生了有人不停没有启用Opcache的事变
那么什么是Opcache呢?
Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费利用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复利用,从而克制了从磁盘读代替码再次编译的时间斲丧。同时,它还应用了一些代码优化模式,使得代码执行更快。从而加速PHP的执行。
PHP的正常执行流程如下

request哀求(nginx,apache,cli等)-->Zend引擎读取.php文件-->扫描其辞书和表达式 -->剖析文件-->创建要执行的计算机代码(称为Opcode)-->最后执行Opcode--> response 返回
每一次哀求PHP脚本都会执行一遍以上步调,如果PHP源代码没有厘革,那么Opcode也不会厘革,显然没有须要每次都重新生成Opcode,联合在Web中无所不在的缓存机制,我们可以把Opcode缓存下来,以后直接访问缓存的Opcode岂不是更快,启用Opcode缓存之后的流程图如下所示:

Opcode cache 的目地是克制重复编译,减少 CPU 和内存开销。
下面先容Opcache的安装
安装:
1、找到opcache的扩展,我的是php7.1
  1. yum list php71*
复制代码
2、安装扩展
  1. yum install php71w-opcache.x86_64
复制代码
配置:
  1. zend_extension=opcache.so
  2. [opcache]
  3. ;开启opcache
  4. opcache.enable=1 
  5. ;CLI环境下,PHP启用OPcache
  6. opcache.enable_cli=1
  7. ;OPcache共享内存存储大小,单位MB
  8. opcache.memory_consumption=128 
  9. ;PHP使用了一种叫做字符串驻留(string interning)的技术来改善性能。例如,如果你在代码中使用了1000次字符串“foobar”,在PHP内部只会在第一使用这个字符串的时候分配一个不可变的内存区域来存储这个字符串,其他的999次使用都会直接指向这个内存区域。这个选项则会把这个特性提升一个层次——默认情况下这个不可变的内存区域只会存在于单个php-fpm的进程中,如果设置了这个选项,那么它将会在所有的php-fpm进程中共享。在比较大的应用中,这可以非常有效地节约内存,提高应用的性能。
  10. 这个选项的值是以兆字节(megabytes)作为单位,如果把它设置为16,则表示16MB,默认是4MB
  11. opcache.interned_strings_buffer=8
  12. ;这个选项用于控制内存中最多可以缓存多少个PHP文件。这个选项必须得设置得足够大,大于你的项目中的所有PHP文件的总和。
  13. 设置值取值范围最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。也就是说在200到1000000之间。
  14. opcache.max_accelerated_files=4000
  15. ;设置缓存的过期时间(单位是秒),为0的话每次都要检查
  16. opcache.revalidate_freq=60
  17. ;从字面上理解就是“允许更快速关闭”。它的作用是在单个请求结束时提供一种更快速的机制来调用代码中的析构器,从而加快PHP的响应速度和PHP进程资源的回收速度,这样应用程序可以更快速地响应下一个请求。把它设置为1就可以使用这个机制了。
  18. opcache.fast_shutdown=1
  19. ;如果启用(设置为1),OPcache会在opcache.revalidate_freq设置的秒数去检测文件的时间戳(timestamp)检查脚本是否更新。
  20. 如果这个选项被禁用(设置为0),opcache.revalidate_freq会被忽略,PHP文件永远不会被检查。这意味着如果你修改了你的代码,然后你把它更新到服务器上,再在浏览器上请求更新的代码对应的功能,你会看不到更新的效果
  21. 强烈建议你在生产环境中设置为0,更新代码后,再平滑重启PHP和web服务器。
  22. opcache.validate_timestamps=0
  23. ;开启Opcache File Cache(实验性), 通过开启这个, 我们可以让Opcache把opcode缓存缓存到外部文件中, 对于一些脚本, 会有很明显的性能提升.
  24. 这样PHP就会在/tmp目录下Cache一些Opcode的二进制导出文件, 可以跨PHP生命周期存在.
  25. opcache.file_cache=/tmp
复制代码
查看phpinfo:

测试结果:

同样的接口从以前的几百毫秒提升到如今的50ms左右

总结
以上就是这篇文章的全部内容了,渴望本文的内容对各人的学习大概工作具有肯定的参考学习代价,如果有疑问各人可以留言交换,谢谢各人对脚本之家的支持。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作