PHP的工作原理如何理解,生命周期是怎么样的呢?
Admin 2022-09-17 群英技术资讯 427 次浏览
php是一门适用于web开发的动态语言,它可以说是一个用C语言实现的包含大量组件的软件框架。那么,php是如何工作的呢?它的生命周期是怎么样的呢?
php是以请求/响应为周期运行服务端应用程序,当请求进入应用程序,流程如下:
php的每一个请求都会重复以上的交互。
php的运行模式有两种:web模式和cli模式。无论是哪种公众模式,php的工作原理都是一样的,都是作为一种SAPI运行。首先,认识下SAPI,它是什么?
Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,Sapi通过一系列钩子函数,使得PHP可以和外围交互数据,这是PHP非常优雅和成功的一个设计,通过sapi成功的将PHP本身和上层应用 解耦隔离,PHP可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。
常见的SAPI有cli、cgi、php-fpm以及各服务具体的sapi。
在php的生命周期中,有4个关键调用:
以nginx服务器为例,在web模式下,生命周期流程如下:
1、模块初始化阶段(module init):
这个阶段主要进行php框架、zend引擎的初始化操作。这个阶段一般是在SAPI启动时执行一次,对于FPM而言,就是在fpm的master进行启动时执行的。php加载每个扩展的代码并调用其模块初始化例程(MINIT),进行一些模块所需变量的申请,内存分配等。
2、请求初始化阶段(request init):
当一个页面请求发生时,在请求处理前都会经历的一个阶段。对于fpm而言,是在worker进程accept一个请求并读取、解析完请求数据后的一个阶段。在这个阶段内,SAPI层将控制权交给PHP层,PHP初始化本次请求执行脚本所需的环境变量。
3、php脚本执行阶段
php代码解析执行的过程。Zend引擎接管控制权,将php脚本代码编译成opcodes并顺次执行
4、请求结束阶段(request shutdown):
请求处理完后就进入了结束阶段,PHP就会启动清理程序。这个阶段,将flush输出内容、发送http响应内容等,然后它会按顺序调用各个模块的RSHUTDOWN方法。 RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。
5、模块关闭阶段(module shutdown):
该阶段在SAPI关闭时执行,与模块初始化阶段对应,这个阶段主要是进行资源的清理、php各模块的关闭操作,同时,将回调各扩展的module shutdown钩子函数。这是发生在所有请求都已经结束之后,例如关闭fpm的操作。(这个是对于CGI和CLI等SAPI,没有“下一个请求”,所以SAPI立刻开始关闭。)
PHP的核心架构图
到此,关于“PHP的工作原理如何理解,生命周期是怎么样的呢?”的学习就结束了,希望能够解决大家的疑惑,另外大家动手实践也很重要,对大家加深理解和学习很有帮助。如果想要学习更多的相关知识,欢迎关注群英网络资讯站,小编每天都会给大家分享实用的文章!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
我们知道浏览器有很多,不同人的使用习惯不同,因此我们需要的统计网站访问用户使用浏览器的比例,这样有助我们更好的做好网站。那么要如何判断浏览器类型呢?下面给大家分享几个基于php判断浏览器的方法。
在本文中,我会向你展示如何在 Laravel 中从头开始实现 repository 设计模式。我将使用 Laravel 5.8.3 版,但 Laravel 版本不是最重要的。在开始写代码之前,你需要了解一些关于 repository 设计模式的相关信息。
这篇文章给大家分享的是如何利用tp5实现自定义分页样式的内容。小编觉得挺实用的,因此分享给大家做个参考,下面是具体代码,感兴趣的朋友就继续往下看吧。
很多新手在学习PHP时,对于PHP表单的get和post的使用不是很清楚,因此这篇文章就给大家介绍一下PHP表单,包括表单处理,表单验证,必填字段以及实例介绍,有需要的朋友可以参考一下。
使用php获取时间今天明天昨天时间戳2013-06-2011:12<?phpecho"今天:".date("Y-m-d")."<br>";echo"昨天:".date("Y-m-d",strtotime("-1day")),"<br>";echo"
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008