了解opcache
钥匙要点
-
OPCACHE是PHP 5.5中的内置缓存引擎,该引擎将预编码脚本字节码存储在内存中,从而导致PHP应用程序中的性能提升。它可以作为较旧的PHP版本上的扩展名安装,并且可以将网站的平均响应时间缩短多达14%。
- opcache是比APC缓存更好的解决方案,因为APC不支持较新的PHP版本,并且可能导致执行错误。 OPCACHE与PHP本身更紧密地绑定,从而导致更频繁的更新和更少的错误。但是,与APC不同,OPCACHE不能用作数据缓存引擎。 要检查OPCACHE是否正常运行,可以使用opcache_get_configuration()和opcache_get_status()functions。还有几个准备好的脚本可获取所有opcache配置和状态数据,并以用户友好的方式显示。
- >可以在一个项目中启用OPCACHE并在单个服务器上的另一个项目中禁用。这是通过在全球级别启用OPCACHE,然后使用ini_set()函数在特定项目中禁用的OPCACHE来实现 版本5.5中的
- 在网络上,您会很容易地找到许多涵盖所有OPCACHE安装和配置步骤的教程(默认情况下是在5.5上启用,但可以作为较旧版本的扩展名安装)。阅读下面的文章,以找到有关使用此特定缓存引擎的不同实践方面的一些典型问题的答案。 >
- 1。 Opcache是否值得安装?我可以期待什么速度提升? 当然,这取决于。如果您的服务器设法处理传入的流量并保持较低的响应时间,则您可能不会感到需要进行性能。但是,在一个较大的网站上,每个小优化步骤都有很多流量。实施OPCACHE可以使您每秒处理更多的请求,并比没有字节码缓存引擎更快地返回响应。由于Opcache非常易于安装和配置,因此您不会花费太多时间来设置所有内容。
如果您正在寻找一些OPCACHE性能测试,则当然应该阅读有关实现此缓存引擎的AppDynamics文章。在他们的测试中,OPCACHE的安装使网站的平均响应时间减少了14%。 Web应用程序不同动作的响应时间的减少从6%到74%不等。如文章中所述,不同的代码零件可能会或多或少地从实施字节码缓存引擎中受益。我鼓励您详细阅读文章,并检查您可以在哪里获得最高的性能提升。
如果您正在寻找有关Opcache性能的其他资源,请在Fideloper.com和MassiveCale.com上查看示例。两项测试均报告安装OPCACHE后的响应时间减少了约50%。
>2。我已经使用了APC缓存。我应该迁移到opcache吗?
我认为你应该。有几个优点可以使Opcache成为更好的解决方案。
首先,APC缓存无法与最新的PHP版本一起使用。它根本不支持PHP 5.5。不建议将其安装在PHP 5.4上,因为据报道,这种配置可能会导致破坏整个应用程序的执行错误。只需查看有关PHP加速器或此堆栈溢出线程的Wikipedia文章即可获取一些详细信息。 但是,Opcache与PHP 5.5捆绑在一起,因此它肯定可以与此PHP版本一起使用。如文档中所写,还可以使用较旧的PHP版本(从5.2到5.4)安装。通常,OPCACHE比其他字节码缓存引擎更与PHP本身绑定,这可能会导致更新更新和更少的错误(有关详细信息,请阅读此处)。
>>从APC迁移到OPCACHE的唯一重要的事情是,后者无法用作数据缓存引擎。如果您已经实现了APC,则可能使用其APC_ADD()和APC_Fetch()函数,这些功能是数据缓存服务的接口。 Opcache只是一个字节码缓存引擎,因此不会提供类似的功能。如果您打算从APC切换到OPCACHE,请记住考虑此限制。请记住,如果您想保持APC Userland功能,则有一个APCU项目(非常感谢Oscar Merina在评论中指出)。
3。如何检查opcache是否实际上是在缓存我的文件?
如果您已经安装和配置了OPCACHE,则可能会发现控制哪些PHP文件实际上是在缓存的重要性。整个缓存引擎在后台工作,对访问者或Web开发人员透明。为了检查其状态,您可以使用提供此类信息的两个功能之一:opcache_get_configuration()和opcache_get_status()。幸运的是,有几个准备好的脚本,可以获取所有Opcache配置和状态数据,并以友好的方式显示。您无需独自编写任何代码,只需从下面选择一种工具:
>
- opcache控制面板,
- rasmus lerdorf的Opcache-STATUS,
- Pieter Hordijk的Opcachegui,
- 安德鲁·科灵顿(Andrew Collington)的opcache-gui。
首先,可能在每个典型项目中,您必须确保将OPCACHE.USE_CWD选项设置为true。启用此设置意味着Opcache引擎将查看完整的文件路径,以区分具有相同名称的文件。将其设置为false将导致具有相同基本名称的文件之间的碰撞。
>在使用注释的工具和框架中,还有一个重要的设置。如果使用学说,请记住将opcache.comments和opcache.save_comments设置设置为true。因此,您的文件中的文档注释也将包含在OPCACHE生成的预编码代码中。此设置将使您可以在没有任何干扰的情况下处理注释。
>
如果您的项目基于特定框架或Web应用程序,则最好检查文档中有关OPCACHE配置的任何指南。例如,这里有Moodle的示例配置。
5。我将应用程序配置保存在PHP文件中。我可以防止它被缓存吗?
>您的项目包含比其他文件更频繁的文件,您可以将其排除在缓存之外。处理包含您网站配置指令的PHP文件时,它可能特别方便。如果您阻止它们被缓存,则可以确保立即在您的应用程序中看到此文件中的每个更改。
opcache允许您指定包含缓存引擎不会处理的所有路径的黑名单文件。设置opcache.blacklist_filename指令后,只需将正确的文件列表放入您指定的路径中即可。文档页面包含一些有关如何将特定文件从缓存中排除的示例。>
6。如何在启用OPCACHE的单个服务器上同时运行开发环境和生产环境?>如果您的服务器运行了多个应用程序,则可能只愿意在其中一些应用程序中使用OPCACHE。开发和测试站点是此类环境的示例,在这种环境中,具有字节码启用的字节码不可行,并且可能造成的弊大于利。
幸运的是,可以在一个项目中启用OPCACHE并在单个服务器上禁用。为此,首先,您需要通过设置OPCACHE.SHABLE指令为php.ini文件中的true来启用全局级别的OPCACHE。然后,如果您不想在其中一个项目中使用字节码缓存,只需通过使用Ini_set()函数将相同的指令设置为false来禁用它。因此,首先,您需要在全球范围内启用缓存,然后可以在某些项目“本地”中将其禁用。您不能做相反的事情 - 不允许使用ini_set()启用缓存。
>设置opcache。可在项目中的顶部文件中可为false设置,将禁用缓存,同时将其保存在其他地方。
我希望这套常见的问题和答案为您提供了一些有关如何在PHP应用程序中使用Opcache的实用信息。如果您对该主题还有其他疑问或评论,请随时在下面发布它们。您也可以通过Google Plus与我联系。摘要
经常询问有关opcache
的问题
> php?
opcache中OPCACHE的主要功能是一个强大的PHP扩展程序,可以通过将预编译的脚本字节码存储在共享内存中来改善PHP性能。这消除了PHP在每个请求上加载和解析脚本的需求,从而减少了执行时间和内存使用情况。它对流量高或复杂应用程序的网站特别有益,因为它可以显着加快加载时间并增强整体性能。>
> OPCACHE与其他Caching机制有何不同?存储PHP脚本输出的缓存机制,OPCACHE存储了PHP脚本的预编码。这意味着每次提出请求时都不必重新编译PHP代码,从而节省了很多处理时间和资源。这使OPCACHE成为改善PHP性能的更有效的解决方案。>
>如何在我的PHP配置中启用Opcache?>
您可以通过使用php中的opcache_get_status()函数。此功能返回有关OPCACHE状态的一系列信息,包括配置设置,内存使用率和命中率。您可以使用此信息来验证OPCACHE是否正常工作。 php。此功能将清除OPCACHE并强迫PHP在下一个请求中重新编译脚本。但是,请记住,经常清除opcache可能会对性能产生负面影响,因为它破坏了缓存的目的。
>> opcache有任何潜在的问题或限制?提高PHP的性能,并非没有潜在的问题或局限性。例如,它可能会引起基于文件的会话或基于文件的用户数据存储的问题,因为除非文件时间戳更改,否则不会重新编译脚本。另外,对于流量低或简单应用程序的网站可能不那么有效,因为性能增长可能并不明显。>如何优化OPCACHE配置以获得最大性能?
>有几种配置指令您可以调整它们以优化OPCACHE性能。例如,您可以增加opcache.memory_compumption,以分配更多内存以存储预编译字节码。您还可以调整opcache.revalidate_freq来控制脚本更改的opcache多久检查一次。
opcache与所有PHP版本都兼容?
opcache与php 5.2及更高版本兼容。但是,默认情况下为5.5 php。对于早期版本,您需要将其安装为PECL扩展。
>我可以将OPCACHE与其他Caching机制一起使用?
>
opcache适合所有类型的网站或应用程序?>以上是了解opcache的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

JWT是一种基于JSON的开放标准,用于在各方之间安全地传输信息,主要用于身份验证和信息交换。1.JWT由Header、Payload和Signature三部分组成。2.JWT的工作原理包括生成JWT、验证JWT和解析Payload三个步骤。3.在PHP中使用JWT进行身份验证时,可以生成和验证JWT,并在高级用法中包含用户角色和权限信息。4.常见错误包括签名验证失败、令牌过期和Payload过大,调试技巧包括使用调试工具和日志记录。5.性能优化和最佳实践包括使用合适的签名算法、合理设置有效期、

会话劫持可以通过以下步骤实现:1.获取会话ID,2.使用会话ID,3.保持会话活跃。在PHP中防范会话劫持的方法包括:1.使用session_regenerate_id()函数重新生成会话ID,2.通过数据库存储会话数据,3.确保所有会话数据通过HTTPS传输。

PHP8.1中的枚举功能通过定义命名常量增强了代码的清晰度和类型安全性。1)枚举可以是整数、字符串或对象,提高了代码可读性和类型安全性。2)枚举基于类,支持面向对象特性,如遍历和反射。3)枚举可用于比较和赋值,确保类型安全。4)枚举支持添加方法,实现复杂逻辑。5)严格类型检查和错误处理可避免常见错误。6)枚举减少魔法值,提升可维护性,但需注意性能优化。

SOLID原则在PHP开发中的应用包括:1.单一职责原则(SRP):每个类只负责一个功能。2.开闭原则(OCP):通过扩展而非修改实现变化。3.里氏替换原则(LSP):子类可替换基类而不影响程序正确性。4.接口隔离原则(ISP):使用细粒度接口避免依赖不使用的方法。5.依赖倒置原则(DIP):高低层次模块都依赖于抽象,通过依赖注入实现。

在PHPStorm中如何进行CLI模式的调试?在使用PHPStorm进行开发时,有时我们需要在命令行界面(CLI)模式下调试PHP�...

使用PHP的cURL库发送JSON数据在PHP开发中,经常需要与外部API进行交互,其中一种常见的方式是使用cURL库发送POST�...

静态绑定(static::)在PHP中实现晚期静态绑定(LSB),允许在静态上下文中引用调用类而非定义类。1)解析过程在运行时进行,2)在继承关系中向上查找调用类,3)可能带来性能开销。
