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相关推荐

  1. Spring IOC和Bean生命周期以及源码分析

    这篇文章主要讲解 IOC 容器的创建过程,让大家对整体有一个全局的认识,文章目录如图: 1. 基础知识 1.1 什么是 Spring IOC ? IOC 不是一种技术,只是一种思想,一个重要的面向对象 ...

  2. Spring5源码 - 07 Spring Bean 生命周期流程 源码解读02

    文章目录 Pre 通俗流程 finishBeanFactoryInitialization Pre Spring5源码 - 06 Spring Bean 生命周期流程 概述 01 接上文 通俗流程 下 ...

  3. activity 生命周期_Activity 源码解析

    Android 应用程序启动过程 Activity启动过程可以分为两种:一种是根activity的启动过程,另一种是普通activity启动过程.根activity指的是应用程序启动的第一个activ ...

  4. Vue.js 源码分析(九) 基础篇 生命周期详解

    先来看看官网的介绍: 主要有八个生命周期,分别是: beforeCreate.created.beforeMount.mounted.beforeupdate.updated   .beforeDes ...

  5. C语言初阶-C语言中的数据类型以及变量的作用域和生命周期,常量的类型

    看之前记得先点赞收藏呦!谢谢大家的支持! 目录 一.c语言中的数据类型 注意:这里的long型的定义是>=int所占字节数,所以占4个是没有问题的 二.变量和常量 1.变量的类型 2.变量的作用 ...

  6. 框架源码专题:springIOC的加载过程,bean的生命周期,结合spring源码分析

    文章目录 1.BeanFactory和ApplicationContext的区别? 2. IOC与 Bean的加载过程 ①:初始化容器DefaultListableBeanFactory ②:创建读取 ...

  7. Django框架深入了解_01(Django请求生命周期、开发模式、cbv源码分析、restful规范、跨域、drf的安装及源码初识)

    阅读目录 一.Django请求生命周期: 二.WEB开发模式: 三.cbv源码分析: 四.认识RESTful 补充知识:跨域 五.基于原生django开发restful的接口 六.drf安装.使用.A ...

  8. zuul源码分析之Request生命周期管理

    为什么80%的码农都做不了架构师?>>>    zuul核心框架 zuul是可以认为是一种API-Gateway.zuul的核心是一系列的filters, 其作用可以类比Servle ...

  9. istio源码分析——pilot-agent如何管理envoy生命周期

    原文:istio源码分析--pilot-agent如何管理envoy生命周期 声明 分析的源码为0.7.1版本 环境为k8s 由于没有C++ 基础,所以源码分析止步于 C++,但也学到很多东西 pil ...

最新文章

  1. 图灵奖得主Judea Pearl:人工智能是如何走出死胡同的?
  2. 《Microsoft Sql server 2008 Internal》读书笔记--第八章The Query Optimizer(1)
  3. BLE安全机制从入门到放弃
  4. 【PAT乙级】1055 集体照 (25 分)
  5. 如何把选择屏幕放到标准屏幕上
  6. Android 开发 技术大纲 某学课堂
  7. 宽屏企业网站源码中英php_宽屏版大气企业网站源码dede网站源码中英文网站模板SEO...
  8. 机器学习(三十四)——策略梯度
  9. jQuery地图插件-jqvmap
  10. truncate(can)
  11. python book.save_Python之操作excel
  12. STM32 高速定时器配置为PWM使用细节
  13. linux中unzip命令无法使用解决方法
  14. Spring Boot整合Redis
  15. AK acm/oj.aabb
  16. 通过Shell命令-监视一个进程或端口,挂掉后自动重启,并自定义日志
  17. 山经·南山经:招摇山
  18. 卸载应用后,删除安装根目录下的所有文件,提示已在另一进程打开,在资源管理器进程中找不到该程序的解决
  19. 贝萨尔曲线实现Periscope心形点赞动画效果
  20. 顺序表(一篇带你掌握顺序表)

热门文章

  1. 第十一章Web服务器的安装与配置
  2. idea报错:Invalid bound statement (not found)
  3. hdu 1078 FatMouse and Cheese(记忆化搜索)
  4. java+opencv+intellij idea实现人脸识别
  5. (转载)虚幻引擎3--【UnrealScript教程】章节一:6.int和float
  6. PHP图形图像的典型应用 --常用图像的应用(统计图)
  7. 【转贴】使用和制作patch文件
  8. 创建一个单选框的html代码是,HTML试题(超有用).doc
  9. magento邮件使用php,用Magento的Email模板机制发邮件
  10. mysql 慢_MySQL很慢... 怎么破??-阿里云开发者社区