php生命周期

PHP设计理念及特点

  • 多进程模型:由于PHP是多进程模型,不同请求间互不干涉,这样保证了一个请求挂掉不会对全盘服务造成影响。
  • 弱类型语言:一个变量的类型并不是一开始就确定不变的,运行中才会确定并可能发生隐式或显示的类型转换。
  • 引擎(Zend)+组件(ext)的模式降低内部耦合。
  • 中间层(sapi)隔绝web server和PHP。

PHP体系结构

PHP体系结构
  • SAPI 全称Server Application Programming Interface,也就是服务端应用编程接口,Sapi通过一系列钩子函数,使得PHP可以和外围交互数据,这是PHP非常优雅和成功的设计,通过sapi成功的将PHP本身和上层应用解耦隔离,PHP可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。
  • 内核:处理请求、文件流、错误处理等相关操作。
  • 扩展层:一组函数、类库和流。
  • Zend引擎:将PHP代码翻译成可以执行的opcode的处理以及实现相关的处理方法,实现了基础的数据结构(如:hashtable),内存分配机制以及管理,同时提供相关的API方法供外部去调用。

PHP Life Cycle

PHP 生命周期,一切从 SAPI 开始。

单进程SAPI生命周期

一个 PHP 进程,在其生命周期内,经历了数个阶段。
MINIT:每个模块都依次执行模块初始化。涉及全局变量,常量,INI文件,类。
RINIT:当进程开始处理 PHP 请求时,每个模块依次执行请求初始化。涉及请求变量、环境变量。
Zend Engine:编译,执行。
RSHUTDOWN:当请求处理完毕,每个模块依次执行请求终止。
Zend Engine:垃圾收集 - 变量释放。
MSHUTDOWN:当 PHP 进程关闭时,与其关联的模块将依次从内存中销毁,即模块关闭。

单进程.jpg

多线程SAPI生命周期

多线程的 SAPI 生命周期,MINITMSHUTDOWN 在进程的存活期内,只需要执行一次。

多线程.jpg

详细图解

php生命周期
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、PHP的运行模式: PHP两种运行模式是WEB模式、CLI模式。无论哪种模式,PHP工作原理都是一样的,作为一...
    金星show阅读 589评论 3 3
  • PHP的执行分三个阶段:处理请求的开始阶段、处理请求阶段、请求之后的结束阶段。 处理请求的开始阶段: 1 模块初始...
    冰_茶阅读 961评论 0 0
  • 选用php作为后端语言就不得不清楚php生命周期的问题 php生命周期和运行模式有很大的关系 cli模式 : 1....
    smallThree1阅读 370评论 0 0
  • layout: posttitle: php内核学习-生命周期与执行过程date: 2016-03-28categ...
    焜_阅读 3,715评论 2 17
  • 深入理解php底层:php生命周期 原文(http://blog.csdn.net/hguisu/article...
    yaokui阅读 766评论 1 2