php 变量存活期,php 变量生命周期:PHP源码分析-PHP的生_php
php的最多的两种运行模式是web模式、CLI模式。
无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行。
1、当我们在终端敲入php这个命令的时候,它使用的是CLI。
它就像一个web服务器一样来支持php完成这个请求,请求完成后再重新把控制权交给终端。
2、当使用Apache作为宿主时,当一个请求到来时,PHP会来支持完成这个请求。
http://www.gaodaima.com/50428.htmlphp 变量生命周期:PHP源码分析-PHP的生_php
main/php.h中定义了以下几个宏
#define PHP_MINIT_FUNCTION ZEND_MODULE_STARTUP_D
#define PHP_MSHUTDOWN_FUNCTION ZEND_MODULE_SHUTDOWN_D
#define PHP_RINIT_FUNCTION ZEND_MODULE_ACTIVATE_D
#define PHP_RSHUTDOWN_FUNCTION ZEND_MODULE_DEACTIVATE_D
#define PHP_MINFO_FUNCTION ZEND_MODULE_INFO_D
#define PHP_GINIT_FUNCTION ZEND_GINIT_FUNCTION
#define PHP_GSHUTDOWN_FUNCTION ZEND_GSHUTDOWN_FUNCTION
对应的作用是
PHP_MINIT_FUNCTION 初始化module时运行
PHP_MSHUTDOWN_FUNCTION 当module被卸载时运行
PHP_RINIT_FUNCTION 当一个REQUEST请求初始化时运行
PHP_RSHUTDOWN_FUNCTION 当一个REQUEST请求结束时运行
PHP_MINFO_FUNCTION 这个是设置phpinfo中这个模块的信息
PHP_GINIT_FUNCTION 初始化全局变量时
PHP_GSHUTDOWN_FUNCTION 释放全局变量时
看一个自定义扩展案例片段:
int minit_time;
PHP_MINIT_FUNCTION(test)
{
minit_time = time(NULL);
return SUCCESS;
}
PHP_MSHUTDOWN_FUNCTION(test)
{
FILE *fp=fopen("mshutdown.txt","a+");
fprintf(fp,"%ld/n",time(NULL));//让我们看看是不是每次请求结束都会在这个文件里追加数据
fclose(fp);
return SUCCESS;
}
int rinit_time;
PHP_RINIT_FUNCTION(test)
{
rinit_time = time(NULL);
return SUCCESS;
}
PHP_RSHUTDOWN_FUNCTION(test)
{
FILE *fp=fopen("rshutdown.txt","a+");
fprintf(fp,"%ld/n",time(NULL));//让我们看看是不是每次请求结束都会在这个文件里追加数据
fclose(fp);
return SUCCESS;
}
PHP_MINFO_FUNCTION(test)
{
php_info_print_table_start();//调用php_write输出HTML标签
php_info_print_table_header(2, "module info", "enabled"); 本文链接http://www.cxybl.com/html/wlbc/Php/20121221/35071.html
欢迎大家阅读《php 变量生命周期:PHP源码分析-PHP的生_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码
微信 赏一包辣条吧~
支付宝 赏一听可乐吧~
php 变量存活期,php 变量生命周期:PHP源码分析-PHP的生_php相关推荐
- Spring IOC和Bean生命周期以及源码分析
这篇文章主要讲解 IOC 容器的创建过程,让大家对整体有一个全局的认识,文章目录如图: 1. 基础知识 1.1 什么是 Spring IOC ? IOC 不是一种技术,只是一种思想,一个重要的面向对象 ...
- Spring5源码 - 07 Spring Bean 生命周期流程 源码解读02
文章目录 Pre 通俗流程 finishBeanFactoryInitialization Pre Spring5源码 - 06 Spring Bean 生命周期流程 概述 01 接上文 通俗流程 下 ...
- activity 生命周期_Activity 源码解析
Android 应用程序启动过程 Activity启动过程可以分为两种:一种是根activity的启动过程,另一种是普通activity启动过程.根activity指的是应用程序启动的第一个activ ...
- Vue.js 源码分析(九) 基础篇 生命周期详解
先来看看官网的介绍: 主要有八个生命周期,分别是: beforeCreate.created.beforeMount.mounted.beforeupdate.updated .beforeDes ...
- C语言初阶-C语言中的数据类型以及变量的作用域和生命周期,常量的类型
看之前记得先点赞收藏呦!谢谢大家的支持! 目录 一.c语言中的数据类型 注意:这里的long型的定义是>=int所占字节数,所以占4个是没有问题的 二.变量和常量 1.变量的类型 2.变量的作用 ...
- 框架源码专题:springIOC的加载过程,bean的生命周期,结合spring源码分析
文章目录 1.BeanFactory和ApplicationContext的区别? 2. IOC与 Bean的加载过程 ①:初始化容器DefaultListableBeanFactory ②:创建读取 ...
- Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)
阅读目录 一.Django请求生命周期: 二.WEB开发模式: 三.cbv源码分析: 四.认识RESTful 补充知识:跨域 五.基于原生django开发restful的接口 六.drf安装.使用.A ...
- zuul源码分析之Request生命周期管理
为什么80%的码农都做不了架构师?>>> zuul核心框架 zuul是可以认为是一种API-Gateway.zuul的核心是一系列的filters, 其作用可以类比Servle ...
- istio源码分析——pilot-agent如何管理envoy生命周期
原文:istio源码分析--pilot-agent如何管理envoy生命周期 声明 分析的源码为0.7.1版本 环境为k8s 由于没有C++ 基础,所以源码分析止步于 C++,但也学到很多东西 pil ...
最新文章
- 图灵奖得主Judea Pearl:人工智能是如何走出死胡同的?
- 《Microsoft Sql server 2008 Internal》读书笔记--第八章The Query Optimizer(1)
- BLE安全机制从入门到放弃
- 【PAT乙级】1055 集体照 (25 分)
- 如何把选择屏幕放到标准屏幕上
- Android 开发 技术大纲 某学课堂
- 宽屏企业网站源码中英php_宽屏版大气企业网站源码dede网站源码中英文网站模板SEO...
- 机器学习(三十四)——策略梯度
- jQuery地图插件-jqvmap
- truncate(can)
- python book.save_Python之操作excel
- STM32 高速定时器配置为PWM使用细节
- linux中unzip命令无法使用解决方法
- Spring Boot整合Redis
- AK acm/oj.aabb
- 通过Shell命令-监视一个进程或端口,挂掉后自动重启,并自定义日志
- 山经·南山经:招摇山
- 卸载应用后,删除安装根目录下的所有文件,提示已在另一进程打开,在资源管理器进程中找不到该程序的解决
- 贝萨尔曲线实现Periscope心形点赞动画效果
- 顺序表(一篇带你掌握顺序表)
热门文章
- 第十一章Web服务器的安装与配置
- idea报错:Invalid bound statement (not found)
- hdu 1078 FatMouse and Cheese(记忆化搜索)
- java+opencv+intellij idea实现人脸识别
- (转载)虚幻引擎3--【UnrealScript教程】章节一:6.int和float
- PHP图形图像的典型应用 --常用图像的应用(统计图)
- 【转贴】使用和制作patch文件
- 创建一个单选框的html代码是,HTML试题(超有用).doc
- magento邮件使用php,用Magento的Email模板机制发邮件
- mysql 慢_MySQL很慢... 怎么破??-阿里云开发者社区