作为动态语言,PHP是在运行时编译执行的,其依赖的是zend引擎(就是一个虚拟机)。

而php编译执行的过程如下:
(不在详细讲了,不懂的去补一下编译原理或者直接百度详细教程)
一. Scanning(Lexing)

   从名字上就大概理解过程了,就是扫描php文本,将文本中的文本块,转换为程序可以识别的数据块,如“空格,变量...”,总之就是zend枚举的数据类型了,专业词语,就是讲php文本转换为一个token数组;

二. Parsing, 将Tokens转换成简单而有意义的表达式

  如题目所说,就是去除多余的空格,然后将token数组转换为有逻辑关系的有意义的表达式。其实前两步,就类似于c语言的预处理和编译;

三. Compilation,将表达式编译成Opocdes(这个不用多说了)

四. Execution,Zend引擎顺次执行Opcodes

好了,以上就是基本的编译执行过程了,其实有编程经验的,看完之后,就立刻想到在生产环境中,前三步基本上执行一次之后,在以后很长的时间里都没必要执行的,这就可以加快php的执行速度了。
嗯,这就是题目所提到的opcode缓存,就是将php文本转后得到opcode缓存起来,以后就直接执行第四部就行了。

至于如何配置opcode缓存,这个还在看资料中,初步猜测也就是更改一下php的配置文件罢了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐