[PHP] PHP的脚本执行

PHP的脚本执行:

PHP的脚本执行还是会经过编译环节, 只不过它们一般会在运行的时候实时进行编译

1.启动PHP及Zend引擎, 加载注册的扩展模块

2.读取脚本文件,Zend引擎对脚本文件进行词法分析,语法分析。

3.编译成opcode执行

4.如果安装opcode缓存扩展(如APC, xcache, eAccelerator等),可能直接从缓存中读取opcode执行

脚本的编译执行:

1.读取脚本,通过lex按照词法规则切分一个一个的标记(token)。

2.使用bison生成语法分析器。

3.Zend引擎将代码编译为opcode

4.PHP是构建在Zend虚拟机(Zend VM)之上的。PHP的opcode就是Zend虚拟机中的指令。

编程语言的编译器(compiler)或解释器(interpreter)一般包括两大部分:

1.读取源程序,并处理语言结构。

2.处理语言结构并生成目标程序。

词法分析器:

Lex(词法分析生成器:A Lexical Analyzer Generator)。

Yacc(Yet Another Compiler-Compiler)

1.安装lex,apt-get install flex

2.lex的词法规则文件

定义段

%%

规则段

%%

用户代码段