PHP内核之旅-1.生命周期

1.SAPI接口

PHP具体应用的编程接口。

2.开始和结束

  PHP开始执行以后会经过两个主要的阶段:

    处理请求之前的开始阶段和请求之后的结束阶段。

      1.1开始阶段:

        1.1.1 模块初始化阶段(MINT),只进行一次。

        1.1.2 模块激活阶段(RINIT),PHP会调用所有模块的RINIT函数

      1.2结束阶段(脚本执行到末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段)

        1.2.1 停用模块(RSHUTDOWN,对应RINIT)

        1.2.2 关闭模块(MSHUTDOWN,对应MINIT),Web服务器退出或者命令行脚本执行完毕退出时

3.单进程SAPI生命周期

  CLI/CGI模式的PHP属于单进程的SAPI模式。处理一次请求后就关闭。

在各个阶段之间PHP还做了很多工作。

(1)启动

(2)初始化若干全局变量

(3)初始化若干常量

(4)初始化Zend引擎和和性组建

(5)解析php.ini

(6)全局操作函数的初始化

(7)初始化静态构建的模块和共享模块(MINIT)

(8)禁用函数和类

(9)ACTIVATION

(10)激活Zend引擎

(11)激活SAPI

(12)环境初始化

(13)模块请求初始化

(14)运行

  php_execute_script函数包含了运行PHP脚本的全部过程

(15)DEACTIVATION

(16)flush

  sapi_flush将最后的内容刷新出去

(17)关闭Zend引擎

4.多进程SAPI生命周期

5.Zend引擎

Zend引擎是PHP实现的核心,提供了语言实现上的基础设施。

  PHP的语法时限,脚本的编译运行环境,扩展机制以及内存管理。

  很多PHP扩展都是使用Zend API,而Zend正是PHP语言本身的实现,PHP只是使用Zend这个内核来构建PHP语言的。

参考资料:http://www.php-internals.com/book/?p=chapt02/02-01-php-life-cycle-and-zend-engine

作  者: Jackson0714 出  处:http://www.cnblogs.com/jackson0714/ 关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教! 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。 特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我 声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏黑泽君的专栏

什么是SOA

参考链接:https://blog.csdn.net/u011225629/article/details/73558087

6472
来自专栏Laoqi's Linux运维专列

Memcached基础了解

1163
来自专栏Linyb极客之路

Spring Boot的并发编程

1.2K6
来自专栏技术/开源

开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部...

2431
来自专栏菩提树下的杨过

spring: 加载远程配置

通常在spring应用中,配置中的properties文件,都是打包在war包里的,部署规模较小,只有几台服务器时,这样并没有什么大问题。如果服务器多了,特别是...

3538
来自专栏海说

Servlet/JSP

Servlet/JSP为Java EE中接收、转发、响应客户端请求的的技术,是基于Web容器所提供的服务。 Servlet与JSP关系 Servlet是使用Ja...

2040
来自专栏SpringBoot 核心技术

第四十三章: 基于SpringBoot & RabbitMQ完成TopicExchange分布式消息消费

39115
来自专栏Vamei实验室

Linux进程间通信

我们在Linux信号基础中已经说明,信号可以看作一种粗糙的进程间通信(IPC, interprocess communication)的方式,用以向进程封闭的内...

27110
来自专栏IMWeb前端团队

pm2模块编写入门

本文作者:IMWeb zzbozheng 原文出处:IMWeb社区 未经同意,禁止转载 PM2 模块 PM2模块是通过PM2来安装和管理,代码可以托管...

2216
来自专栏JetpropelledSnake

RESTful源码学习笔记之RPC和Restful深入理解

RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。通常的实...

1043

扫码关注云+社区

领取腾讯云代金券