PHP头条
热点:

PHP内核剖析 PHP基础架构,


以PHP7为学习基础,PHP7的源码为C编写的。

参考书籍:《PHP内核剖析》秦鹏/著

GitHub网页:https://github.com/pangudashu/php7-internal

目录

1.1 简介

1.2 PHP的构成

1.3 生命周期


1.1 简介

PHP是一种非常流行的高级脚本语言,尤其适合web开发,快速、灵活和实用是PHP最重要的特点。

PHP独特的语法混合了C、Java、Perl及PHP自创新的语法,同时支持面向对象、面向过程,相比于前面的语言,PHP具有语法简洁、使用灵活、开发效率高、容易学习等特点。具体特点如下:

●开源免费:PHP社区有大量的活跃开发者贡献代码;

●快捷:程序开发库,运行快,技术本身学习快,实用性强;

●效率高:PHP消耗相当少的系统资源,自动gc机制;

●类库资源:有大量可用类库供开发者使用;

扩展性:允许用户使用C/C++扩展PHP

●跨平台:可以在UNIX、Windows、Mac OS等系统上使用PHP。

个人可开发的点在于类库资源扩展性,这样能使用很多完整的功能模块,并能根据自身需求扩展开发。

1.2 PHP的构成

源码下有几个主要的目录:SAPI、main、Zend、ext

具体过程是:浏览器<--->SAPI<--->main<--->Zend,Zend在解析的过程中会加载ext扩展

SAPI是PHP的应用接口层,为了适配不同的应用环境,是整个PHP框架最外层的一部分。最常用的SAPI是Cli与Fpm;

main为PHP的主要代码,主要是输入/输出、web通信,以及PHP框架的初始化操作等,如fastcgi协议的解析(CGI全称是“通用网关接口”(Common Gateway Interface),HTTP服务器与你的或其它机器上的程序进行“交谈”的一种工具,其程序一般运行在网络服务器上)、扩展的加载、PHP配置解析等工作,位于ZendVM的上一层;

Zend目录是PHP解析器的主要实现,即ZendVM; PHP的代码解析、执行就是靠Zend完成;包括编译器与执行器,将PHP的代码解析为执行器可识别的指令,等价于Java的JVM,都是抽象出来的虚拟计算机,与C/C++不同的是,虚拟机运行的指令不是机器指令。虚拟机的优势是可以跨平台,只需要按照不同平台编译出对应的解析器就能实现代码的跨平台执行;

●ext是PHP的扩展目录,PHP中很多操作函数都是通过扩展提供的。通过扩展,我们可以用C/C++实现更强大的功能与性能。扩展分为PHP扩展与Zend扩展,Opcache是Zend扩展;

●TSRM是线程安全相关实现。

1.3 生命周期


            PHP生命周期被划分为:模块初始化阶段(module startup)、请求初始化阶段(request startup)、执行脚本阶段(execute script)、请求关闭阶段(request shutdown)、模块关闭阶段(module shutdown)。

1、模块初始化阶段

这个阶段主要进行PHP框架、Zend框架的初始化操作。此函数定义在main.c中。

通过上图我们可以明显发现这个php_module_startup是在SAPI执行时启动的,对于FPM而言,就是在master进程启动时执行的。具体执行的操作如图1。扩展的钩子函数就是在这个阶段调用的。

2、请求初始化阶段

该阶段在请求处理前每一个请求都会经历的一个阶段,对于fpm而言,是在worker进程accept一个请求且读取、解析完请求数据后的一个阶段。php_request_startup主要过程如图:

3、执行脚本阶段

该阶段包括PHP代码的编译、执行两个核心阶段。具体过程如图:

4、请求关闭阶段

PHP解析执行后进入请求关闭阶段,这个阶段将flush输出内容、发送HTTP应答头、清理全局变量、关闭编译器与执行器等。在该阶段回调各扩展的request shutdown钩子函数。该阶段是请求初始化的相反操作。

5、模块关闭阶段

该阶段在SAPI关闭时执行,与模块初始化阶段对应,这个阶段主要进行资源的清理、PHP各模块的关闭,同时,回调各扩展的module shutdown钩子函数。具体操作函数为php_module_shutdown()。

 

www.phpzy.comtrue/php/22992.htmlTechArticlePHP内核剖析 PHP基础架构, 以PHP7为学习基础,PHP7的源码为C编写的。 参考书籍 :《PHP内核剖析》秦鹏/著 GitHub网页:https://github.com/pangudashu/php7-internal 目录 1.1 简介 1.2 PHP的构成 1.3 生命...

相关文章

    暂无相关文章

PHP之友评论

今天推荐