PHP-编译运行过程以及opcode缓存的笔记
作为动态语言,PHP是在运行时编译执行的,其依赖的是zend引擎(就是一个虚拟机)。而php编译执行的过程如下:(不在详细讲了,不懂的去补一下编译原理或者直接百度详细教程)一. Scanning(Lexing)从名字上就大概理解过程了,就是扫描php文本,将文本中的文本块,转换为程序可以识别的数据块,如“空格,变量...”,总之就是zend枚举的数据类型了,专业词语,就是讲php文本转
·
作为动态语言,PHP是在运行时编译执行的,其依赖的是zend引擎(就是一个虚拟机)。
而php编译执行的过程如下:
(不在详细讲了,不懂的去补一下编译原理或者直接百度详细教程)
一. Scanning(Lexing)
从名字上就大概理解过程了,就是扫描php文本,将文本中的文本块,转换为程序可以识别的数据块,如“空格,变量...”,总之就是zend枚举的数据类型了,专业词语,就是讲php文本转换为一个token数组;
二. Parsing, 将Tokens转换成简单而有意义的表达式
如题目所说,就是去除多余的空格,然后将token数组转换为有逻辑关系的有意义的表达式。其实前两步,就类似于c语言的预处理和编译;
三. Compilation,将表达式编译成Opocdes(这个不用多说了)
四. Execution,Zend引擎顺次执行Opcodes
好了,以上就是基本的编译执行过程了,其实有编程经验的,看完之后,就立刻想到在生产环境中,前三步基本上执行一次之后,在以后很长的时间里都没必要执行的,这就可以加快php的执行速度了。
嗯,这就是题目所提到的opcode缓存,就是将php文本转后得到opcode缓存起来,以后就直接执行第四部就行了。
至于如何配置opcode缓存,这个还在看资料中,初步猜测也就是更改一下php的配置文件罢了。
更多推荐
已为社区贡献1条内容
所有评论(0)