PHP7内核学习笔记 - 内核结构

根据个人的理解,PHP内核结构可以大体分成SAPI + main + Zend + Ext + TSRM

  • 其中SAPI是最外层的,其全称为Server abstraction API,它是PHP提供对外服务的规范,主要负责处理输入和输出。 它可以直接对接web服务器,如ApacheNginx等,接收这种来自Web服务器的网络请求并返回相应的响应数据。而在cli运行方式下,它接收的则是命令行的输入,最终也会返回命令行的输出。总的来说它提供一系列的PHP接口,使得PHP可以和其他的应用程序进行交互。所以SPAI并不只有一种,大致有apache2handlercgicliembedfpm这几种。
  • apache2handler:用于Apache以模块方式运行PHP的情况。PHP编译后生成.dll.so扩展,在Apache中进行配置。Apache接收到php的处理请求后调用PHP扩展进行处理。此处就是进行php文件解析的入口
  • cgi:普通CGI模式下web server(e.g. ApacheNginx)将满足CGI协议的请求交给CGI进程进行处理
  • cliphp文件以命令行方式进行调用时候的处理入口
  • embed:内嵌模式。PHP是用C语言编写的,所以可以在C语言中调用PHP文件。这种情况下就以此作为入口
  • fpm:全称为FastCGI Process Manager,可以理解为CGI的升级版本,通常在Nginx下使用。Nginx依据Fast-CGI协议将请求交给php-fpm进行处理
  • main层起到了一个承上启下的作用。SAPI接收输入数据后无法自己处理;Zend引擎虽然可以执行代码,但是它肯定需要在哪边进行唤起。main层就在中间起到了一个过度的作用;另外模块的初始化等工作也需要在这边进行;
  • Zend引擎是脚本最终解析,执行并得到结果的地方;Ext作为扩展并不独立存在,它可以理解为Zend的附属部分;
  • TSRM全称是Thread Safe Resource Manager–线程安全资源管理器。它是保证共享资源的安全的一种机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值