opcode是什么?


它是一种PHP脚本编译后的中间语言,类似java的字节码。


 


PHP代码执行(Zend引擎)的步骤如下:







1.Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
2.Parsing, 将Tokens转换成简单而有意义的表达式
3.Compilation, 将表达式编译成Opocdes
4.Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

Zend引擎从文件系统读取文件,扫描其词典和表达式,解析文件,创建要执行的计算机代码(opcode),最后执行opcode。每次请求PHP脚本都会执行一遍以上步骤,如果PHP源代码没有变化,那么把opcode缓存下来,直接访问opcode不是更快。



 

 


opcode缓存是什么?



当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(opcode)。


opcode缓存的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁盘I/O开销,那么opcode缓存的性能提升是非常有限的。


但是既然opcode缓存能带来CPU和内存开销的降低,这总归是好事。


 


php opcode的缓存扩展有哪些?




eAccelerator
xcache
APC
opcache(原名Zend Optimizer+)