Opcode 缓存

1.什么是opcode

解释器分析代码之后,生成可以直接运行的中间代码,就称做操作码,opcode

目的:将生成的中间代码放到共享内存中提升PHP性能,省去了每次加载和解析PHP脚本的开销。

2.解释器与编译器的区别

解释器是生成了中间代码后直接运行中间代码,运行时的控制权还是在解释器手里。

编译器则是生成了中间代码之后还进一步优化代码,生成可以直接运行的目标程序 ,但不执行,等待用户触发执行,他的控制权在目标程序,和编译器无关。

3.php是解释型语言,他的原理与编译有点相似,包括词法分析,语法分析,语义分析.....,php解释器的核心引擎就是zend engine

4.php如何查看一段代码的opcode

安装php的parsekit扩展,通过扩展的api就可以查看php的opcode,如parsekit_compile_string()

5.opcode缓存相当于是加密PHP代码的一种机制。

6.PHP中几种opcode

opcache 官方推荐

商业代码 5.2之前是zend optimizer 5.3+ zend guard loader.


6、 开启opcode缓存

生成opcode是需要系统开销的,每一次执行都要生成一次opcode,这样的开销还是可观的,所以php的优化必须开启opcode的缓存,来避免重复的编译。

php的opcode缓存有APC,eAccelerator,XCache,这些都是把opcode放在共享内存中。

7.opcode缓存过期

opcode缓存是会过期的,如果过期就要得新生成一次,当然也可以跳过过期检查的机制,在php.ini中设置apc.stat=off

这样程序代码的修改得通过重启服务器来生效。


(本文为转载+部分原创)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是opcode缓存? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Ope...
    人在码途阅读 3,073评论 0 3
  • PHP缓存之Opcode缓存 1. 什么是Opcode缓存? 当解释器完成对脚本代码的分析后,便将他们声称可以直接...
    人在码途阅读 3,538评论 0 0
  • 转自陈明乾的博客,可能有一定更新。 转原文声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、...
    C86guli阅读 10,147评论 6 72
  • MIME,http,html MIME:MIME(Multipurpose Internet Mail Exten...
    若与阅读 3,255评论 1 6
  • 跟异城的新公司约好月中报道,秋璟搬家在即。好在现在刚刚月初,还有半月打包收拾的时间。她计划一间房间用三天,不...
    白小藿阅读 3,233评论 0 2