APC 操作码缓存的工作原理

Posted

技术标签:

【中文标题】APC 操作码缓存的工作原理【英文标题】:How APC opcode cache works 【发布时间】:2013-09-15 18:49:22 【问题描述】:

如果我可以(不是必须)为同一页面上的每个访问者提供唯一的内容,我可以使用 apc 操作码缓存吗?我不确定我是否了解操作码的工作原理。如果只是将 php 结果保存到缓存并像“html”一样提供它,那么它对我来说毫无用处。我绝对需要在每个页面浏览量上运行 sql 查询。或者它是如何优化 php 的更好方法?应用程序的负载非常高 - 每秒大约 1000 次浏览量。它在 nginx + php-fpm 上运行。

【问题讨论】:

APC 操作码缓存存储您的 PHP 脚本“编译”时生成的字节码(操作码)......因此它可以一次又一次地执行而无需重新编译......它不会生成执行结果(除非你明确告诉它) 但是优化 PHP 本身仍然是一个好主意......每秒 1000 次浏览量是相当高的使用率,特别是如果你只在单个服务器上运行,所以你应该看看性能更好的架构 @MarkBaker 我在单个服务器上使用PHPAPC 处理5k -10k rps 没有问题,服务器负载几乎为0.25 那是mysql 读/写和一些.ini和 .dat 文件没有问题。只有 4 核服务器,8GB 内存。一切都是关于调音的:) 【参考方案1】:

是的,你可以。 APC 缓存程序,而不是它的结果。因此,代码每次都会以“优化”的方式执行。

【讨论】:

感谢您提供简单快速的解释 :) 如果我上传新版本的 php 并且旧版本在缓存中 - apc 加载旧代码以获得 TTL 时间或检查文件是否有新版本? 默认情况下,APC 在每次请求时都会检查文件是否已更新。请阅读简短描述php.net/manual/en/apc.configuration.php#ini.apc.stat【参考方案2】:

如何判断是从哪个资源对象加载的、缓存的操作码还是新编译的?

【讨论】:

以上是关于APC 操作码缓存的工作原理的主要内容,如果未能解决你的问题,请参考以下文章

PHP require 在清除 APC 缓存后仅工作一次,然后出现 500 错误。为啥?

如何强制 Magento 使用 APC 缓存

ASM字节码操作 工具类与常用类 AnalyzerAdapter 工作原理

关系型数据库工作原理-快速缓存(翻译自Coding-Geek文章)

搞懂 Redis 持久化,RDB模式AOF模式工作原理详解及操作

8.5 高速缓存的工作原理