首页 > 后端开发 > php教程 > 了解opcache

了解opcache

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-02-20 08:38:10
原创
864 人浏览过

了解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中的 php带有内置的缓存引擎 - OPCACHE - 将预编译的脚本字节码存储在内存中。如果您熟悉APC或XCache,您将已经知道此类引擎的工作原理。当每个PHP脚本在运行时编译时,执行时间的一部分被用于将人类可读代码转换为机器可以理解的代码。在第一次执行特定的PHP文件期间,像OPCACHE,APC或XCACHE这样的字节码缓存引擎仅执行一次。然后将预编译的脚本存储在内存中,这将导致PHP应用程序中的性能提高。
  • 在网络上,您会很容易地找到许多涵盖所有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-GUI脚本。要检查缓存引擎是否正常工作,只需查看OPCACHE-GUI页面上的“概述”选项卡的百分比。如果内存使用率和命中率值大于零,则意味着OPCACHE正在缓存PHP代码,并且正在使用缓存的文件来处理请求。要查看正在缓存的特定PHP文件的列表,只需导航到选项卡“文件使用”。查看文件列表,以确保您的项目中的文件被缓存。

    了解opcache

    4。我应该设置任何特定于框架的配置吗? 基本上,Opcache引擎应作为代码作者透明。这意味着您可以将所需的任何代码放入应用程序中(与所使用的PHP版本一起使用),并且OPCACHE应该正确处理。但是,只有以正确的方式设置OPCACHE配置时,它才能起作用。错误的缓存引擎配置可能会破坏您的整个网站。

    首先,可能在每个典型项目中,您必须确保将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?

    启用Opcache,您需要修改php.ini文件。查找标有[opcache]的部分,然后更改opcache的值。进行更改后,保存文件并重新启动您的Web服务器以进行更改以生效。

    >如何检查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与其他caching机制结合使用,例如Memcached或Memcached或Redis。虽然Opcache通过缓存预编译字节码来改善PHP性能,但其他缓存机制可以通过缓存数据库查询或PHP脚本的输出来进一步提高性能。

    >

    opcache适合所有类型的网站或应用程序?>

以上是了解opcache的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板