PHP生命周期
2021-02-04 17:26:39 0 举报
php-cgi、php-fpm、sapi、zend
作者其他创作
大纲/内容
zend_startup()(6.初始化内存管理,初始化cwd_globals,启动扩展机制,设置工具函数,设置词法和语法函数,初始化zend虚拟机的handler,以及对全局变量初始化等)
13.析构垃圾回收
php_request_shutdown
php-cgi
php-cgi结束即关闭
HTML静态文件index.html
C点位
php_free_request_globals()9.free所有的request的全局变量
zend_post_deactivate_modules()11.调用所有扩展的post-RSHUTDOMN函数
php_startup_auto_globals()(13.注册——GET/_POST/_COOKIE/_SERVER/_ENV/_REQUEST/_FILES自动的全局变量)
php_module_shutdown(php-fpm挂掉,此模块关闭)
php_disable_functions()/php_disable_classes()(22.禁用php.ini中配置需要禁用的函数和类)
符号表
php_module_shutdown
gc_reset()2.重置垃圾回收
G点位
php-fpm生命周期
init_op_array初始化op_array
Run-time compiler
zend_startup_modules()(19.对模块进行排序并检测是否注册到module_register_hash表中)
PHP API
php_execute_script
php_output_register_constants()(9.初始化输出相关的预定义常量)
A点位
Executor
PHP
B点位
编译器
php_output_shutdown()11.关闭输出output
sapi_activate()6.调用sapi_module里面的activate方法
compile_file
语法分析器
zend_register_standart_ini_entries()(12.注册zend_ini_entries)
PHP底层架构
fpm_request_end
wrapper
fcgi_accept_request
php_rfc1867_register_constants()(10.注册文件上传相关的预定义函数)
php_call_shutdown_functions()1.调用所有可能的关闭函数
词法分析器
fpm_request_executing
zend_set_utility_values()(14.设置utility values)
virtual_cwd_shutdown()4.关闭cwd
php_register_extensions_bc()(17.启动附加的PHP扩展)
php_module_startup
E点位
Browse
PHP核心
init_executor()4.初始化执行器
执行层
open_file_for_scanning读取PHP代码内容,并将词法分析指针指向第一个位置
中间数据层
php_request_startup
php_register_internal_extensions()(16.注册内部扩展)
pass_two设置op_array中对应zend虚拟机的hanlder
Zend Extension API
php_ini_register_extensions()(18.加载所有外部扩展)
zval_ptr_dtor()8.销毁所有的super-globals
php_shutdown_config()8.关闭ini config
zend_startup_extensions()(20.来启动各个模块)
zend_interned_strings_restore()15.还原内部字符串
zend_register_functions()(21.注册福建的函数)
php_startup_sapi_content_types()(15.初始化SAPI对于不同类型内容的处理函数)
zend_unset_timeout()4.重置最大执行时间
SAPI
动态文件无法解析,调用fastcgi
php_output_activate()1.重置输出全局并设置输出处理程序的堆栈
Zend API
zend_call_destructors()2.调用所有可能的析构函数
cgi协议、fastcgi协议、php-fpm实现
静态文件,找到对应文件直接返回
zend_destroy_rsrc_list2.清理持久化的符号表
浏览器
接口方式
php_binary_init()(8.计算PHP执行的二进制程序路径)
zend_activate_modules()10.调用request_startup_func激活模块
执行引擎
sapi_activate()(2.调用sapi_module里面的activate方法)
php代码
php-fpm
zend_compile_top_stmt将AST转换为op_array
compiler
Zend Engine
zend_signal_activate()7.对信号进行处理
nginx
zend_set_timeout()8.设置超时时间
php_free_shutdown_functions()7.free所有的shutdown函数
php_output_deactivate()6.关闭输出层(发送设置http头,清楚输出处理程序等)
php_hash_environment()9.初始化相关全局变量
解释层
zend_unregister_ini_entries()7.销毁ini对应的hashtable
Web Server
shutdown_memory_manager()10.关闭内存管理
socket、cgi协议等
php_init_config()(11.初始化配置信息,同时调用zend_parse_ini_file解析php.ini里面的配置)
客户端(不限于浏览器)
gc_globals_ctor()(5.对gc_globals进行初始化)
服务器(不限于Nginx、Apache)
sapi_flush()1.调用module对应的flush函数
5.初始化扫描器
zend_unset_timeout()16.还原最大执行时间
zend_execute在zend虚拟机中执行op_array
sapi_initialize_empty_request()(1.对sapi_globals中的成员变量做初始化)
栈
zend_hash_destroy5.销毁全局变量
zend_destroy_modules()3.小会所有模块
zend_ini_shutdown()9.销毁EG(ini_directives)
zend_deactivate()10.关闭scanner/executor/compiler并还原ini entries
opline指令
master-worker
php_output_end_all()3.将所有输出缓冲区内容输出
init_compiler()3.初始化编译器
发送http://app.poetchao.com/index.php或者html
PHP Extensions
http等协议
php-cgi解析器
zendparse通过词法和语法分析生成AST,赋值到CG(ast)
zend_shutdown_extensions()6.关闭所有扩展
php_output_startup()(3.初始化output相关的变量)
php_startup_ticks(4.对tick_functions进行初始化)
执行栈
PHP-fpm
php-fpm结束即关闭
服务器端应用程序接口
返回数据给客户端
AST语法树
PHP代码
zend_register_list_destructors_ex()(7.注册西沟list)
zend_deactivate_modules()5.调用所有的扩展的rshutdown函数
编译器+虚拟机
D点位
中间代码
zend_post_startup()
php_shutdown_stream_hashes()14.关闭stream hash
Execuutor
F点位
core_globals_dtor()12.关闭core_globals
virtual_cwd_deactivate()13.释放虚拟CWD内存
sapi_deactivate()12.SAPI相关关闭
0 条评论
下一页
为你推荐
查看更多