加入收藏 | 设为首页 | 会员中心 | 我要投稿 无锡站长网 (https://www.0510zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php生命周期的详解,优秀的程序员需掌握

发布时间:2022-10-19 14:01:55 所属栏目:PHP教程 来源:互联网
导读: 本篇文章给大家带来的内容是关于php生命周期的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
第一个过程是模块初始化阶段(M ini T), 在整个SAPI生命周期内(例

本篇文章给大家带来的内容是关于php生命周期的详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

第一个过程是模块初始化阶段(M ini T), 在整个SAPI生命周期内(例如Apache启动以后的整个生命周期内或者命令行程序整个执行过程中), 该过程只进行一次。第二个过程是模块激活阶段(RINIT),该过程发生在请求阶段, 例如通过url请求某个页面,则在每次请求之前都会进行模块激活(RINIT请求开始)

请求到达之后PHP初始化执行脚本的基本环境,例如创建一个执行环境,包括保存PHP运行过程中变量名称和值内容的符号表, 以及当前所有的函数以及类等信息的符号表。然后PHP会调用所有模块的RINIT函数, 在这个阶段各个模块也可以执行一些相关的操作

一般脚本执行到末尾或者通过调用exit()或die()函数, PHP都将进入结束阶段。和开始阶段对应,结束阶段也分为两个环节,一个在请求结束后停用模块(RSHUTDOWN,对应RINIT), 一个在SAPI生命周期结束(Web服务器退出或者命令行脚本执行完毕退出)时关闭模块(MSHUTDOWN,对应MINIT)

单进程SAPI生命周期

php论坛程序_辞退员工时,哪个程序是不合适的_php程序员

启动

在调用每个模块的模块初始化前,会有一个初始化的过程,它包括:

这里的初始化操作包括内存管理初始化、 全局使用的 函数指针 初始化(如前面所说的zend_printf等),对PHP源文件进行词法分析、语法分析、 中间代码执行的函数指针的赋值,初始化若干HashTable(比如函数表,常量表等等),为 ini文件 解析做准备, 为PHP源文件解析做准备,注册内置函数(如strlen、define等),注册标准常量(如E_ALL、TRUE、NULL等)、注册GLOBALS全局变量等。

将这些模块注册到已注册模块列表(module_registry),如果注册的模块已经注册过了,PHP会报Module XXX already loaded的错误。 1. 将每个模块中包含的函数注册到函数表( CG(function_table) ),如果函数无法添加,则会报 Unable to register functions, unable to load。

在内置模块和附加模块后,接下来是注册通过共享对象(比如DLL)和php.ini文件灵活配置的扩展。

php程序员_php论坛程序_辞退员工时,哪个程序是不合适的

在所有的模块都注册后,PHP会马上执行模块初始化操作(zend_startup_modules)。 它的整个过程就是依次遍历每个模块,调用每个模块的模块初始化函数, 也就是在本小节前面所说的用宏PHP_MINIT_FUNCTION包含的内容。

在处理了文件相关的内容,PHP会调用php_request_startup做请求初始化操作。 请求初始化操作,除了图中显示的调用每个模块的请求初始化函数外,还做了较多的其它工作,其主要内容如下:

这里的环境初始化是指在用户空间中需要用到的一些环境变量初始化,这里的环境包括服务器环境、请求数据环境等。 实际到我们用到的变量,就是POST、_GET、COOKIE、_SERVER、ENV、_FILES。

辞退员工时,哪个程序是不合适的_php程序员_php论坛程序

那么有很多同学在学习PHP的过程中难免会遇到很多困难,我为大家精心准备了相对应的教程,还有大量框架和PHP中高级教程!帮助你进阶中高级程序员,升职涨薪!绝对可以让你学到赚到!获取方法点击下方文章链接即可!

运行

DEACTIVATION

PHP关闭请求的过程是一个若干个关闭操作的集合,这个集合存在于php_request_shutdown函数中。 这个集合包括如下内容:

调用所有通过register_shutdown_function()注册的函数。这些在关闭时调用的函数是在用户空间添加进来的。 一个简单的例子,我们可以在脚本出错时调用一个统一的函数php程序员,给用户一个友好一些的页面,这个有点类似于网页中的404页面。

执行所有可用的__destruct函数。 这里的 析构函数 包括在对象池(EG(objects_store)中的所有对象的析构函数以及EG(symbol_table)中各个元素的析构方法。

将所有的输出刷出去。

(编辑:无锡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!