php内核相关,PHP 扩展开发相关内核概念

PHP扩展开发说实话难度不大,但是却要扩展开发者拥有全面的基础知识以及要熟悉PHP内核的相关概念,这就要求我们对一些相关概念做到了如指掌。

本篇文章会针对一些新手难以理解的大概念进行解释,并大多画了流程图来更加直观的加深你的理解,以及你可能存在的疑问,比如第一个章节PHP生命周期和我们开发扩展有什么关系呢?不要着急,下面会回答你的问题。

如果你对PHP扩展开发还一点都不了解的话,也不要心急,可以看下我的这篇文章PHP扩展开发及入门解惑来个快速上手。

PHP生命周期

什么叫生命周期?这里我们说的生命周期实际上是从PHP启动到终止这段过程中都做了哪些事情。在这里,我们先来个整体周期图。

PHP生命周期整体流程

1460000009770115?w=710&h=305

Note:如图,大致可以分为PHP启动+Modules Init(MINIT)、Runtime、Modules Shutdown(MSHUTDOWN)+PHP终止这几个过程,下面我们对这几个过程进行细分。

PHP启动+MINIT过程

1460000009770116

Runtime过程

经过上面PHP启动和各个Modules加载完成后,PHP就可以正式对外工作了。可以正式对外工作是什么意思呢?也就是说这时候如果客户端浏览器向服务器发起Request,这时的PHP就可以处理了。下面我将Runtime阶段划分成3个部分,分别解释

Runtime 1

1460000009770117?w=576&h=301

Note:当客户端对服务器发起一个Request时,就会去触发这个Runtime 1的流程。主要做了Request Init过程。

Runtime 2

1460000009770118?w=710&h=208

Note:这时,Request Init已经完成,接下来正式执行PHP脚本文件,比如index.php。这里会去判断是否在php.ini中设置了auto_preappend_file,如果设置了就加载该文件,如果没有往下走正式执行index.php,再往下判断是否在php.ini中设置了auto_append_file,如果设置了就加载该文件,好,Runtime 2过程就结束了。

Runtime 3

1460000009770119?w=710&h=425

Note:来到这里就证明,我们所请求的index.php已经执行完毕了,但是还没完,PHP针对每一次的Request都要进行收尾工作,比如销毁一些资源变量、对象实例、刷新缓冲区和Request Shutdown的工作。

MINIT和PHP终止过程

1460000009770120?w=710&h=155

Note:在终止阶段所有的Modules都要做Shutdown操作以及PHP最后的终止工作。

那么,看到这里你或许会有疑问:开发扩展和PHP生命周期有什么关系?

我们都知道适者生存的道理,那么想要开发好的PHP扩展如果不知道不了解PHP的生命周期,那么可能开发出好的PHP扩展吗?答案肯定是不可能的。那么我们开发的扩展和PHP的生命周期又是怎么联系起来的呢?还记得我PHP扩展开发及入门解惑这篇文章中,关于我们扩展中最最重要的.c文件布局吗?

...

PHP_MINIT_FUNCTION(myfirstext)

{

return SUCCESS;

}

PHP_MSHUTDOWN_FUNCTION(myfirstext)

{

return SUCCESS;

}

PHP_RINIT_FUNCTION(myfirstext)

{

return SUCCESS;

}

PHP_RSHUTDOWN_FUNCTION(myfirstext)

{

return SUCCESS;

}

...

这几个函数中PHP_MINIT_FUNCTION()对应了PHP生命周期中的Modules Init,PHP_MSHUTDOWN_FUNCTION()对应了Modules Shutdown,PHP_RINIT_FUNCTION()对应了Request Init以及PHP_RSHUTDOWN_FUNCTION()对应了Request Shutdown。所以我们在编写扩展时,这几个函数是相当重要的。

另外也推荐看一下鸟哥在Yahoo!时的PPT:The PHP Lifecycle

TSRM

关于线程安全的概念,当然也是相当重要,这里我就说不上什么了,直接看鸟哥在08年写的一篇文章即可:揭秘TSRM(Introspecting TSRM)

持续更新。。

PHP扩展开发相关内核概念

相关

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值