菜鸟学php扩展 之 自动生成的扩展框架详解(二)

转载请附上本文地址:http://blog.csdn.net/u011957758/article/details/72456298

前言

上一文:菜鸟学php扩展 之 hello world(一) ,不问所以然的,强行与php扩展say hello了。对于ext_skel自动生成的框架,将在本文进行详解,当作备忘录。

正文

ext_skel的用法

./ext_skel --extname=module [--proto=file] [--stubs=file] [--xml[=file]]
           [--skel=dir] [--full-xml] [--no-help]

  --extname=module   module is the name of your extension(模块名,会在当前目录创建一个该名称子目录)
  --proto=file       file contains prototypes of functions to create(函数原型定义文件)
  --stubs=file       generate only function stubs in file
  --xml              generate xml documentation to be added to phpdoc-cvs
  --skel=dir         path to the skeleton directory(设置骨架生成的目录,不设置该项则默认在ext/extname下)
  --full-xml         generate xml documentation for a self-contained extension
                     (not yet implemented)
  --no-help          don't try to be nice and create comments in the code
                     and helper functions to test if the module compiled (生成的代码中不显示各种帮助注释)

php与扩展相关的流程

1.PHP程序的启动与终止在概念上是分别存在两个的。

一个是php模块被加载的时候,模块启动函数即被引擎调用(PHP_MINIT_FUNCTION)。这使得引擎做一些例如资源类型,注册INI变量等的一次初始化,并且这些数据是常驻内存的,与之对应一个终止(PHP_MSHUTDOWN_FUNCTION)

另一个是PHP请求开始的时候,请求前的启动函数就别调用(PHP_RINIT_FUNCTION),与之对应一个请求结束后的终止(PHP_RSHUTDOWN_FUNCTION)

2.伴随着PHP的启动,便会开始把自身所有已加载的扩展的MINIT方法(全称Module Initialization,是由每个模块自己定义的函数。)(PHP_MINIT_FUNCTION),都执行一遍,在这个时间里,扩展可以定义一些自己的常量、类、资源等所有会被用户端的PHP脚本用到的东西。 这里定义的东东都会常驻内存,可以被所有请求使用,直到关掉PHP模块。

3.一个请求到来时候,PHP会迅速的开辟一个新的环境,并重新扫描自己的各个扩展, 遍历执行它们各自的RINIT方法(全称Request Initialization)(PHP_RINIT_FUNCTION), 这时候一个扩展可能会初始化在本次请求中会使用到的变量等, 还会初始化等会儿用户端(即PHP脚本)中的变量等等。

4.当请求经过业务代码,执行到最后的时候,PHP会启动回收程序&#

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值