【问题标题】:PHP APC-opecode cache and file based output cachePHP APC-opecode 缓存和基于文件的输出缓存
【发布时间】:2016-05-26 08:59:49
【问题描述】:

我正在运行 PHP 版本 5.3.5 并在 Codeigniter 2.1.3 中开发网站 我现在正在努力提高网站性能,我发现缓存可以像 APC 或 memcached 或 Zend OpCache 一样使用。

在 codeigniter 中,我使用 $this->output->cache(43829); 进行缓存。

动作的输出被缓存了,每次请求都返回相同的输出。 但我有动态页面,所以这种缓存不起作用。我正在研究如何将 APC 用于操作码缓存并用于提高网站性能。

APC 是否将 opecode 存储在缓存中,供 zend 引擎用于执行执行,而无需在每个请求上重新生成 opecode?​​p>

附件是我的 PHP APC 配置

【问题讨论】:

    标签: php codeigniter caching


    【解决方案1】:

    PHP 5.3 已经过了将近 2 年的生命周期,并且 APC 不适用于当前的 PHP 版本。 PHP 5.5+ 带有 Zend Opcache,它具有相同的功能。无需尝试让您的网站使用旧技术,只需将您的服务器升级到当前(且安全)的 PHP 版本即可为您带来性能提升,而无需您执行任何其他操作。

    【讨论】:

    • Zend 操作码缓存不等效。 Opcode 缓存是类似的,但(至少在我上次检查时)它不能用于存储任意值。在提供垃圾收集和内存压缩(这看起来相当愚蠢)之前,它不太可能实现这样的数据缓存。
    • 当然,但是 OP 在他的问题中特别提到了操作码缓存。对于数据缓存,有很多选择(包括 APCu)。
    • 我无法升级php版本。因为一些依赖。 APC 是在执行前缓存执行的输出还是操作码?
    • @PraveenD:这还不够好。您继续针对 5.3 进行开发会使问题变得更糟
    【解决方案2】:

    动作的输出被缓存,每次请求都返回相同的输出

    虽然它比重新生成页面要快,但仍远未达到最佳状态。在这种情况下最好使用缓存反向代理。

    我正在研究如何将 APC 用于操作 [e] 代码缓存

    您的问题意味着您认为您尚未使用操作码缓存。我建议您的第一个停靠点是查看它是否已启用。您可以从 phpinfo() 的输出中看到这一点,或者查看function_exists('apc_sma_info');

    不太可能为 PHP 的未来版本提供 APC。 ZOP+ 是当前与 PHP 5.4+ 捆绑的操作码缓存。它适用于 5.3,但需要一些努力。 Tim 说 5.3 已经过了销售日期,应该升级是正确的。

    请注意,ZOP+ 还包括一个优化器(而且,相当令人担忧的是,它似乎对许多框架的性能产生了重大影响)。与 APC 相比,ZOP+ 的性能更依赖于缓存大小 - 但即使使用 APC,错误地调整缓存大小也不会产生好的结果。

    【讨论】:

    • 添加了 PHP -APc 配置细节。 APC 已启用。我的配置好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    相关资源
    最近更新 更多