详解PHP中的OPcache 扩展

详解PHP中的OPcache 扩展

OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。PHP 5.5 之后的版本都是默认绑定该扩展的,之前的 PHP 5.2,5.3 和 5.4 版本可以使用 » PECL 扩展中的 OPcache 库。

配置项解释

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

该配置项是PHP手册推荐,在 php.ini 中间进行设置,关于每个配置项的说明如下:

  • opcache.memory_consumption :OPcache 的共享内存大小,以兆字节为单位。
  • opcache.interned_strings_buffer :用来存储预留字符串的内存大小,以兆字节为单位。 PHP 5.3.0 之前的版本会忽略此配置指令。
  • opcache.max_accelerated_files :OPcache 哈希表中可存储的脚本文件数量上限。 真实的取值是在质数集合 { 223, 463, 983, 1979, 3907, 7963, 16229, 32531, 65407, 130987 } 中找到的第一个大于等于设置值的质数。 设置值取值范围最小值是 200,最大值在 PHP 5.5.6 之前是 100000,PHP 5.5.6 及之后是 1000000。
  • opcache.revalidate_freq :检查脚本时间戳是否有更新的周期,以秒为单位。 设置为 0 会导致针对每个请求, OPcache 都会检查脚本更新。如果 opcache.validate_timestamps 配置指令设置为禁用,那么此设置项将会被忽略。
  • opcache.validate_timestamps : 如果启用,那么 OPcache 会每隔 opcache.revalidate_freq 设定的秒数 检查脚本是否更新。 如果禁用此选项,你必须使用 opcache_reset() 或者 opcache_invalidate() 函数来手动重置 OPcache,也可以 通过重启 Web 服务器来使文件系统更改生效。
  • opcache.fast_shutdown :如果启用,则会使用快速停止续发事件。 所谓快速停止续发事件是指依赖 Zend 引擎的内存管理模块 一次释放全部请求变量的内存,而不是依次释放每一个已分配的内存块。从 PHP 7.2.0 开始,此配置指令被移除。 快速停止的续发事件的处理已经集成到 PHP 中, 只要有可能,PHP 会自动处理这些续发事件。
    更多配置项说明请参考 OPcache手册。

OPcache函数

OPcache提供了一些内置函数,用于控制字节码的缓存状态,使用前提是需要开启 OPcache 扩展。

  • opcache_compile_file :不需要运行即可编译缓存PHP脚本,如果单独使用参数 FILE 必填,FILE 为脚本路径,例如:opcache_compile_file('index.php')
  • opcache_get_configuration :获取 opcache 的当前所有配置信息
  • opcache_get_status :获取 opcache 的当前缓存信息,信息包含共享内存空间是否满载等
  • opcache_invalidate :废除脚本缓存,有两个参数,script (脚本路径信息) 必填,force(boolean) 选填,如果 force 参数为 true 强制废除缓存,如果为 false 或不填,那么只有当脚本的修改时间 比对应字节码的时间更新,脚本的缓存才会失效。
  • opcache_is_script_cached :检查脚本是否在OPCache中缓存,参数 FILE(文件路径) 必填
  • opcache_reset :充值所有 opcache 缓存,等待下一次执行编译

开发注意事项

在本地开发环境中,建议关闭 OPcache 扩展,缓存可能会让本地调试产生很多问题,减低开发效率。

关于共享内存的知识扩展

共享内存是一种在相同机器中的应用程序之间交换数据的有效方式。内存对于程序的执行效率要高于磁盘I/O,所以合理的使用内存可以提升程序的效率。它的应用场景有web请求、数据库查询、模板引擎缓存、以及当前文章里提到的 OPcache 对于 PHP 的编译缓存。

关于详解PHP中的OPcache 扩展的文章就分享到这,如果对你有帮助欢迎继续关注我们哦

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/40398.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(1)
php学习php学习订阅用户
上一篇 2022年6月12日 22:56
下一篇 2022年6月12日 22:57

相关推荐

  • PHP中的RPC。

    近年来,随着互联网技术的迅猛发展,分布式系统逐渐成为了互联网应用领域中不可缺少的部分。而分布式系统中的RPC技术则是实现不同进程、不同机器之间通讯的重要手段之一。其中,PHP中的RPC技术也逐渐成为了各大互联…

    2023年5月30日
    01
  • PHP8.0中的图像处理库

    随着数字化时代的到来,图像处理在各行各业中的应用越来越广泛,尤其是随着互联网技术的不断发展,图像在网页设计和移动应用中的重要性也得到了越来越高的认可。而在这个领域中,PHP8.0中新增的图像处理库,为我们…

    2023年5月18日
    01
  • 如何利用PHP实现商城的积分商城功能。

    现如今,随着电商行业的不断发展,积分商城功能已经越来越受到人们的关注和喜爱。顾客可以通过积分兑换商城中的商品,不仅为商家积攒人气,也使得顾客消费更具有吸引力。在这方面,PHP作为一种流行的编程语言,其优…

    2023年5月30日
    02
  • 手册中的类型--用于说明需要某种类型的数据

    Mixed:mixed 说明一个参数可以接受多种不同的(但不一定是所有的)类型。如果函数需要的形参是两种以上,都会用mixed; Number:可以是int型和float型 Void: 作为返回类型意味着函数的返回值是无用的。void 作为参…

    2017年11月28日
    0237
  • PHP中的编辑器和IDE。

    纵观现今互联网开发领域,PHP一度成为最受欢迎的的编程语言之一。许多公司和个人使用PHP开发网站、应用程序和电子商务解决方案。而在PHP开发中,选择一款优秀的编辑器和IDE是非常重要的,因为它们可以提高我们的编…

    2023年5月28日
    01
  • 今日分享在linux下如何安装php5.2「linux怎么安装php」。

    在Linux下安装PHP 5.2,可以按照以下步骤进行: 1. 需要更新系统的软件包列表,在终端中输入以下命令: sudo apt-get update 2. 然后,安装EPEL源,EPEL(Extra Packages for Enterprise Linux)是一个由Fedora项目…

    2024年6月14日
    00
  • 微信小程序中PHP实现单选、多选和复选框的实现方法。

    随着微信小程序的日益普及,越来越多的开发者开始关注微信小程序的开发。微信小程序作为一种全新的开发模式,在实现不同功能上需要不同的技术方案。其中,实现单选、多选和复选框是微信小程序开发者经常会面临的一…

    2023年6月3日
    02
  • PHP和Redis中的LUA脚本使用方法

    PHP和Redis中的LUA脚本使用方法 LUA 是一种轻量级的脚本语言,旨在提供高效的嵌入式扩展功能。Redis 是一种开源的 NoSQL 数据库,提供高效的键值存储和缓存功能。在 Redis 中使用 LUA 脚本可以大大提高数据处理效率…

    2023年5月19日
    05

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息