第2章 php整体框架
1、php内部的执行流程
首先 语法分析BNF把php代码切割成Token,在cli的模式下可以通过php -r 'print_r(token_get_all("<?php echo 111;"))' 来查看切割的token
其次 PHP通过语法分析器Bison将Token和符合文法规则的代码生成抽象树AST
最后 抽象树生成opcode等待执行
2、php组织架构
zend引擎,用来解析分词等。
sapi,server api主要给外部提供一些常用的协议或者说规范,如cliSAPI\fpmSAPI\fastcgi\cgi等。
php层,主要对以上两部分承上启下、
3、php中主要使用的文件
zend 使用的是zend_alloc_sizes.h用来管理内存分配策略、zend_alloc.c 是对C的malloc(),free()的上一层封装
gc 使用zend_gc.h\zend_gc.c 来管理内存的回收问题
hash_table,使用zend_hash.c和zend_hash.h来实现数组
4、总结和感想
从本章我知道了php的执行流程,是核心zend引擎实现了对php代码的切割成token,使用bison和BNF对语句进行分析、抽象,最终形成opcode这种机器指令等待最后的执行。也明白了php因为spai的存在才会支持http和cli等方式的请求。