了解 OPCache 行为

Understanding OPCache behavior

即使该网站位于 CloudFlare CDN 之后,我们还是决定使用 OPCache 来减少服务器负载,因为每秒最多(峰值)约 400 个活跃用户(大部分时间是 50-100 u/s).

但是大多数页面对于每个用户都有一些不同的数据,例如用户的仪表板概览,大部分数据是相同的,但是对于需要更新的每个用户有一些不同的数字。

我的问题是:

  1. 为这样的网站使用 OPCache 是否明智?
  2. 它将如何处理具有独特查询的页面?与没有 OPCache 的 运行 相比,它会占用更多 RAM(为每个用户缓存多个页面)吗?
  3. 是否会影响 Signup/Login 等页面的性能?
  4. read 所有 PHP 应用程序都应该使用 OPCache,对吗?

P.S。该网站是 运行 PHP 7.3.4

  1. 是的,它将获得性能提升
  2. 如果您的 RAM 使用量增加并且您对此很担心,您可以通过 opcache.memory_consumption
  3. 微调内存消耗
  4. 影响意味着他们会更快
  5. 是的,除了极端情况(例如,当您的应用程序的源代码以非常快的速度更改或测试时),确实没有理由不使用 OPCache。

TLDR:生产代码应始终启用 OPCached。

OPcache 仅缓存 PHP 脚本的内部操作码表示,而不缓存其输出。执行的查询或页面显示的内容对 OPcache 的行为没有影响。

此缓存将提高所有 PHP 网页的性能。因此,它应该始终在生产站点上启用。

作为这种方法的一般观点 Php 缓存任何 APC 缓存或 opcache 或其他是惊人的策略这应该 php 总体上提高 50% 的性能 因为它的作用如下 当 php 脚本执行时,这涉及三个主要步骤

1-脚本解析

2-编译脚本

3-输出

APC 缓存或充当中介,因为它以编译形式保存 php 脚本,因此 php 将直接从输出阶段开始,这不会影响查询,但会提高其速度作为 MySQL 的查询,或者不仅仅是 SELECT 的语句或其他任何内容,但它涉及执行扩展,如 PDO,因此它会变得更快

您可以对扩展进行如下分类

APC 或 Xcache php 5

在新的 php 版本中使用 opcache

它们的原理都是一样的 一些开发人员喜欢 APC,其他开发人员喜欢 opcache 例如 X-cart,流行的购物平台使用 xcache。

每个 PHP 脚本都在运行时编译, 将人类可读的代码转换为机器可以理解的代码需要时间。

OpCache 是一个字节码缓存引擎,它只会将脚本编译为字节码脚本一次 - 这样可以节省时间 - 然后将预编译的脚本存储在内存中,这应该会提高你的性能 PHP 应用程序。

我认为您遗漏的是 opcache 不缓存脚本的结果,而只是编译脚本。

请注意,如果 php 脚本自身正在为每个用户更改,则此方法效果不佳 或者如果它是从 - 比如说 - 数据库