基于php-5.3.8源代码给大家分享一下php的内核结构,以便更好的理解php脚本的执行过程和写出高效率的脚本。
目录结构如下:
1. build 和编译有关的目录,里面包括wk,awk和sh脚本用于编译处理,其中m4文件是linux下编译程序自动生成的文件,可以使用buildconf命令操作具体的配置文件。
2. ext 扩展库代码,例如mysql,gd,zlib,xml,iconv 等我们熟悉的扩展库,ext_skel是linux下扩展生成脚本,windows下使用ext_skel_win32.php脚本生成,
每个扩展目录下包括php_扩展名.c文件和phpt批处理测试脚本。
3. main 主目录,包括php.h,main.c,logos.h数组等等,是php程序的主要部分,定义了程序的sapi接口全局变量等等。
4. netware 网络目录,以前的版本没有此目录,里面就两个文件sendmail_nw.h和start.c,分别定义sock通信说需要的头文件和具体实现。
5. pear 扩展包目录,php extension and application repository的简写,install-pear.txt文件中详细说明了怎么样安装具体的扩展包,自己去看吧。
6. sapi 和各种服务器的接口调用,例如apache、iis等,也包含一般的fastcgi、cgi等,如果你看过apache的源代码的话,这个目录一目了然的清楚了,比如apache_hooks和apache2handler等等。
7. scripts linux 下的脚本目录。
8. tests 测试脚本目录,主要是phpt脚本,由--test--,--post--,--file--和--expect--三个部分组成。有些需要初始化的可以加--ini--部分。
9. tsrm 线程安全资源管理器,thread safe resource manager的缩写,研究过php的源码,你就会看到这个东西到处都在,保证在单线程和多线程模型下的线程安全和代码一致性。
10. win32目录,windows 下编译php 有关的脚本,用了wsh。
11. zend 文件夹核心的引擎,包括php的生命周期,内存管理,变量定义和赋值以及函数宏定义等等。
如果你有更好的看法,请回邮件讨论,谢谢
http://www.bkjia.com/phpjc/478531.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/478531.htmltecharticle余超 yuchao86@gmail.com 基于php-5.3.8源代码给大家分享一下php的内核结构,以便更好的理解php脚本的执行过程和写出高效率的脚本。 目录结构如...