sapi
输入输出层抽象
cgi模式对应bin/cgi
fastcgi模式对应sbin/php-fpm
cli模式对应bin/php
源码结构体:sapi_module_struct
cgi和fastcgi区别
zend
1.内存管理模块
Zend_alloc_sizes.h:
php内存分配单位
small:内存小与3072b
large:2072b-4kb之间
huge:大于2M
zend_alloc.h:内存操作函数声明
zend_alloc.c:内存管理实现,以及核心数据结构zend_mm_heap
2.垃圾回收
解决循环引用问题,引入了垃圾回收
zend_gc.h
zend.gc.c
3.数组实现
基于HashTable实现
zend_hash.h
zend_hash.c
main
sapi和zend粘合剂,分析脚本文件和参数,调用zend引擎之前初始化
php_module_startup:模块初始化
php_excute_script:脚本通用入口
ext
扩展相关
array、str、pdo等系列函数定义在这里
TSRM
线程安全资源管理器