返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >PHP加速器配置神器opcache怎么用
  • 678
分享到

PHP加速器配置神器opcache怎么用

2023-06-04 08:06:06 678人浏览 独家记忆
摘要

这篇文章将为大家详细讲解有关PHP加速器配置神器opcache怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是opcode?当解释器完成对脚本代码的分析后,便将它们生成可以直接运行

这篇文章将为大家详细讲解有关PHP加速器配置神器opcache怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

什么是opcode?

当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁盘I/O开销,那么opcode cache的性能提升是非常有限的。但是既然opcode cache能带来CPU和内存开销的降低,这总归是好事。

为什么要使用opcode缓存?

这得从php代码的生命周期说起,请求PHP脚本时,会经过五个步骤,如下图所示:
PHP加速器配置神器opcache怎么用

Zend引擎必须从文件系统读取文件、扫描其词典和表达式、解析文件、创建要执行的计算机代码(称为Opcode),最后执行Opcode。每一次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,那么Opcode也不会变化,显然没有必要每次都重行生成Opcode,结合在WEB中无所不在的缓存机制,我们可以把Opcode缓存下来,以后直接访问缓存的Opcode岂不是更快,启用Opcode缓存之后的流程图如下所示:
PHP加速器配置神器opcache怎么用

PHP opcode原理

Opcode是一种PHP脚本编译后的中间语言,就像Java的ByteCode,或者.net的MSL,举个例子,比如你写下了如下的PHP代码:

< ?php   echo "Hello World";   $a = 1 + 1;   echo $a;?>

PHP执行这段代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)

1)Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)。2)Parsing, 将Tokens转换成简单而有意义的表达式。3)Compilation, 将表达式编译成Opocdes。4)Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

PHP opcache介绍

Optimizer+(Optimizer+于2013年3月中旬改名为Opcache),OPcache通过将PHP脚本预编译的字节码存储到共享内存中来提升PHP的性能,存储预编译字节码的好处就是省去了每次加载和解析PHP脚本的开销。

PHP 5.5.0 及后续版本中已经绑定了 OPcache 扩展。 对于 PHP 5.2,5.3 和 5.4 版本可以使用 » PECL扩展中的OPcache库。

PHP 5.5.0及后续版本

OPcache只能编译为共享扩展。如果你使用–disable-all参数禁用了默认扩展的构建,那么必须使用–enable-opcache选项来开启OPcache。编译之后,就可以使用 zend_extension 指令来将 OPcache 扩展加载到 PHP 中。

推荐的php.ini设置

使用下列推荐设置来获得较好的性能:

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

你也可以禁用 opcache.save_comments 并且启用 opcache.enable_file_override。 需要提醒的是,在生产环境中使用上述配置之前,必须经过严格测试。 因为上述配置存在一个已知问题,它会引发一些框架和应用的异常, 尤其是在存在文档使用了备注注解的时候。

以下是opcache的配置说明,其中给有值得都是默认配置:

; opcache的开关,关闭时代码不再优化.opcache.enable=1 ; Determines if Zend OPCache is enabled for the CLI version of PHPopcache.enable_cli=1 ; OPcache的共享内存大小,以兆字节为单位。总共能够存储多少预编译的PHP代码(单位:MB); 推荐128opcache.memory_consumption=64 ; 用来存储临时字符串的内存大小,以兆字节为单位.; 推荐8opcache.interned_strings_buffer=4 ; 最大缓存的文件数目200到100000之间.; 推荐4000opcache.max_accelerated_files=2000 ; 内存"浪费"达到此值对应的百分比,就会发起一个重启调度.opcache.max_wasted_percentage=5 ; 开启这条指令, Zend Optimizer + 会自动将当前工作目录的名字追加到脚本键上,以此消除同名文件间的键值命名冲突.关闭这条指令会提升性能,但是会对已存在的应用造成破坏.opcache.use_cwd=0 ; 开启文件时间戳验证opcache.validate_timestamps=1 ; 检查脚本时间戳是否有更新的周期,以秒为单位。设置为0会导致针对每个请求,OPcache都会检查脚本更新.; 推荐60opcache.revalidate_freq=2 ; 允许或禁止在include_path中进行文件搜索的优化.opcache.revalidate_path=0 ; 如果禁用,脚本文件中的注释内容将不会被包含到操作码缓存文件,这样可以有效减小优化后的文件体积,禁用此配置指令可能会导致一些依赖注释或注解的应用或框架无法正常工作,比如:Doctrine,Zend Framework2等.; 推荐0opcache.save_comments=1 ; 如果禁用,则即使文件中包含注释,也不会加载这些注释内容。本选项可以和opcache.save_comments一起使用,以实现按需加载注释内容.opcache.load_comments=1; 打开快速关闭,打开这个在PHP Request Shutdown的时候会收内存的速度会提高.; 推荐1opcache.fast_shutdown=1 ; 允许覆盖文件存在(file_exists等)的优化特性.opcache.enable_file_override=0  ; 定义启动多少个优化过程.opcache.optimization_level=0xffffffff ; 启用此Hack可以暂时性的解决"can’t redeclare class"错误.opcache.inherited_hack=1 ; 启用此Hack可以暂时性的解决"can’t redeclare class"错误.;opcache.dups_fix=0 ; 通过文件大小屏除大文件的缓存,默认情况下所有的文件都会被缓存.;opcache.max_file_size=0 ; 每N次请求检查一次缓存校验.默认值0表示检查被禁用了,由于计算校验值有损性能,这个指令应当紧紧在开发调试的时候开启.;opcache.consistency_checks=0 ; 从缓存不被访问后,等待多久后(单位为秒)调度重启.;opcache.force_restart_timeout=180 ; 日志记录level,默认只有fatal error和error.;opcache.error_log= ; 将错误信息写入到服务器(Apache等)日志;opcache.log_verbosity_level=1 ; 内存共享的首选后台.留空则是让系统选择.;opcache.preferred_memory_model= ; 运行php脚本时保护共享内存防止意外的写入,只对debug时有用.;opcache.protect_memory=0

最后说一下使用opcache加速php时应该注意的坑:

opcache依靠的是PHP文件的modify time作为文件被修改的检测条件,基于这个会引发两个问题。

第一个问题是做版本回滚时,由于版本回滚后的文件修改时间比现有opcache缓存的文件时间要往前一些,所以可能会导致opcache不会清除缓存,需要手动reload。

第二个问题是做版本发布时,一般都是sync方式,可能会出现文件发布一半时被opcache缓存,用户访问会报程序错误,这个主要是因为文件内容缓存了一半,但是文件的时间戳不会在改变,所以就算opcache检测时也不会去读取新的文件了,需要手动reload。

针对这两个问题,不光reload可以解决,同样调用opcache的接口也可以清除opcache缓存。

你可以使用opcache_reset()或者或者opcache_invalidate()函数来手动重置OPcache。

opcache_reset():该函数将重置整个字节码缓存,在调用opcache_reset()之后,所有的脚本将会重新载入并且在下次被点击的时候重新解析。

opcache_invalidate():该函数的作用是使得指定脚本的字节码缓存失效。 如果force没有设置或者传入的是FALSE,那么只有当脚本的修改时间 比对应字节码的时间更新,脚本的缓存才会失效。

但是不推荐使用,个人在生产环境中进行代码发布后调用opcache_reset()清空缓存(测试确实可以清空缓存),出现过奇葩问题(访问量大的应用),后来就果断放弃了,使用了reload的方式。

关于PHP加速器配置神器opcache怎么用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: PHP加速器配置神器opcache怎么用

本文链接: https://lsjlt.com/news/236971.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PHP加速器配置神器opcache怎么用
    这篇文章将为大家详细讲解有关PHP加速器配置神器opcache怎么用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是opcode?当解释器完成对脚本代码的分析后,便将它们生成可以直接运行...
    99+
    2023-06-04
  • PHP 5.5的加速插件ZEND OPCACHE怎么用
    今天就跟大家聊聊有关PHP 5.5的加速插件ZEND OPCACHE怎么用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。大家知道目前PHP的缓存插件一般有三个:APC、eAccele...
    99+
    2023-06-17
  • PHP的优化加速组件Opcache怎么使用
    这篇文章主要讲解了“PHP的优化加速组件Opcache怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“PHP的优化加速组件Opcache怎么使用”吧!Opcache是一种通过将解析的P...
    99+
    2023-06-27
  • 服务器怎么配置cdn加速
    要配置CDN加速服务器,您可以按照以下步骤进行操作:1. 选择CDN提供商:选择一个可靠的CDN提供商。2. 注册并开通CDN服务:...
    99+
    2023-09-16
    服务器 cdn加速
  • Ubuntu怎么配置Docker镜像加速器
    这篇文章主要介绍“Ubuntu怎么配置Docker镜像加速器”,在日常操作中,相信很多人在Ubuntu怎么配置Docker镜像加速器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Ubuntu怎么配置Docke...
    99+
    2023-07-04
  • 使用免费cdn加速服务器怎么配置
    使用免费CDN加速服务器时,可以按照以下步骤进行配置:1、注册帐号先注册一个免费CDN加速服务帐号。2、创建域名然后在网站上创建一个...
    99+
    2023-03-11
    免费cdn加速服务器 cdn加速 服务器
  • cdn加速服务怎么配置
    要配置CDN加速服务,您需要按照以下步骤进行操作:1. 选择一家CDN服务提供商:有很多CDN服务提供商可以选择,根据您的需求和预算...
    99+
    2023-09-05
    cdn
  • CDN云加速购买怎么配置使用
    购买CDN云加速服务后,需要根据自己的需求和网站特点进行配置和使用。以下是一般的配置和使用步骤: 创建CDN加速域名:在CDN服...
    99+
    2024-04-09
    CDN云加速 CDN
  • CDN加速与防护怎么配置
    配置CDN加速和防护一般包括以下步骤:1. 选择CDN服务提供商:根据自己的需求选择合适的CDN服务提供商。2. 创建加速域名:登录...
    99+
    2023-09-16
    cdn加速
  • cdn加速云安全怎么配置
    配置CDN加速云安全,需要考虑以下几个方面:1. CDN加速配置:首先需要选择一个可靠的CDN服务提供商,并进行相应的配置。这包括将...
    99+
    2023-09-16
    cdn
  • ssl加速服务器怎么设置
    SSL加速服务器是指能够提供SSL加速功能的服务器,它能够大幅度提高SSL加密传输的速度和性能。以下是一些常见的设置步骤:1. 安装...
    99+
    2023-06-07
    ssl加速 ssl
  • 云服务器加速怎么设置
    云服务器加速可以通过以下方式实现: 使用 VPN:VPN 加速允许您连接到云服务器的端口,从而提供加速访问速度,而且可以通过单独的代理进行加速。在购买云服务器之前,您可以查看您的虚拟主机提供商的支持文档或者购买他们提供的加速器,以确保您...
    99+
    2023-10-26
    服务器
  • Nginx怎么配置在线一键生成神器
    这篇文章主要讲解了“Nginx怎么配置在线一键生成神器”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nginx怎么配置在线一键生成神器”吧!NGINX Co...
    99+
    2024-04-02
  • 电商cdn动态加速怎么配置
    配置电商CDN动态加速的步骤如下:1. 选择合适的CDN供应商:根据业务需求和预算,选择一家可靠且价格合理的CDN供应商。2. 注册...
    99+
    2023-09-16
    cdn
  • 云服务器加速器怎么用
    云服务器加速器是一种软件或工具,用于在云服务器上加速应用程序的下载速度。以下是使用云服务器加速器进行加速的步骤: 首先,需要找到支持您的云服务器的主机位置。大多数云服务器提供商都提供了主机位置的列表,您可以通过这些列表查找云服务器的位置...
    99+
    2023-10-26
    加速器 服务器
  • php中怎么配置Cookie加密
    小编给大家分享一下php中怎么配置Cookie加密,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、说明Cookie在客户端浏览器的传输的HTTP头也是明文的。通...
    99+
    2023-06-15
  • 云服务器加速怎么设置的
    云服务器加速是指利用云服务提供商提供的云加速服务,为用户的网站或应用程序提供加速性能的服务。具体来说,要设置云服务器加速的步骤如下: 检查网络连接:确保云服务提供商提供的网络连接稳定可靠,可以满足使用需求。 选择合适的服务:根据网站或应...
    99+
    2023-10-26
    服务器
  • Ubuntu中怎么配置Docker-CE镜像加速
    Ubuntu中怎么配置Docker-CE镜像加速,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实验环境操作系统:Ubuntu 18.04.4 LTSLAN IP :192....
    99+
    2023-06-05
  • 云服务器加速器怎么用啊
    云服务器加速器的使用方法非常简单。首先,您需要登录云服务器加速器的网站,选择适合您的服务器型号和配置。然后,您可以选择将您的 Linux 服务器部署到云服务器加速器上,并按照加速器提供的说明进行配置和优化。一旦配置完成,您就可以使用云服务器...
    99+
    2023-10-27
    加速器 服务器
  • cdn加速原理是什么及怎么配置
    CDN(Content Delivery Network)加速原理是将内容分发到离用户最近的服务器节点,减少用户请求时的网络延迟,从...
    99+
    2023-06-14
    cdn加速原理 cdn
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作