- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP内核之SAPI
深入PHP 内核——SAPI 探究
摘要:PHP 作为一门简单而强大的语言,能够提供很多Web 适用的语言特性。从实践出发,
继弱类型变量原理探究后,王帅将继续带大家弄清PHP 内核中的一些常用部分,本期则是
SAPI 的深入理解。
SAPI 是Server Application Programming Interface (服务器应用编程接口)的缩写。PHP
通过SAPI 提供了一组接口,供应用和PHP 内核之间进行数据交互。
简单的讲,就像函数的输入和输出一样,我们通过Linux 命令行执行一段PHP 代码,本质
是Linux 的Shell 通过PHP 的SAPI 传入一组参数,Zend 引擎执行后,返回给shell,由shell
显示出来的过程。同样的,通过Apache 调用PHP,通过Web 服务器给SAPI 传入数据,
Zend 引擎执行后,返回给Apache ,由Apache 显示在页面上。
图1. PHP 架构图
PHP 提供很多种形式的接口,包括apache、apache2filter、apache2handler、caudium、
cgi 、cgi-fcgi 、cli、cli-server、continuity、embed、isapi、litespeed、milter、nsapi、phttpd
pi3web、roxen、thttpd、tux 和webjames 。但是常用的只有5 种形式,CLI/CGI (命令行)、
Multiprocess (多进程)、Multithreaded (多线程)、FastCGI 和Embedded (内嵌)。
PHP 提供了一个函数查看当前SAPI 接口类型:
[php] view plaincopy
1. string php_sapi_name ( void )
PHP 的运行和加载
无论使用哪种SAPI,在PHP 执行脚本前后,都包含一系列事件:Module 的Init(MINT)和
Shutdown(MSHUTDOWN),Request 的Init(RINT)和Shutdown(RSHUTDOWN)。 第一
阶段是PHP 模块初始化阶段(MINT),可以初始化扩展内部变量、分配资源和注册资源处
理器,在整个PHP 实例生命周期内,该过程只执行一次。
什么是PHP 模块?通过上面的PHP 架构图,在PHP 中可以使用get_loaded_extensions 函
数来查看所有编译并加载的模块/扩展,相当于CLI 模式下的php -m。
以PHP 的Memcached 扩展源代码为例:
[php] view plaincopy
1. PHP_MINIT_FUNCTION(memcached) {
2. zend_class_entry ce;
3. memcpy(memcached_object_handlers,zend_get_std_object_handlers(), sizeof(ze
nd_object_handlers));
4. memcached_object_handlers.clone_obj = NULL; /* 执行了一些类似的初始化操
作 */
5. return SUCCESS;
6. }
第二阶段是请求初始化阶段(RINT),在模块初始化并激活后,会创建PHP 运行环境,同
时调用所有模块注册的RINT 函数,调用每个扩展的请求初始化函数 ,设定特定的环境变
量、分配资源或执行其他任务,如审核。
[php] view plaincopy
1. PHP_RINIT_FUNCTION(memcached) {
2. /* 执行一些关于请求的初始化 */
3. return SUCCESS;
4. }
第三阶段,请求处理完成后,会调用PHP_RSHUTDOWN_FUNCTION 进行回收,这是每
个扩展的请求关闭函数,执行最后的清理工作。Zend 引擎执行清理过程、垃圾收集、对之
前的请求期间用到的每个变量执行unset。请求完成可能是执行到脚本完成,也可能是调用
die()或exit()函数完成
第四阶段,当PHP 生命周期结束时候,PHP_MSHUTDOWN_FUNCTION 对模块进行回收
处理,这是每个扩展的模块关闭函数,用于关闭自己的内核子系统。
[php] view plaincopy
1. PH
您可能关注的文档
- Oracle数据库备份还原操作流程.doc
- Oracle面试题库1.doc
- OrCAD 利用文件快速产生一颗多pin数的零件及如何分割零件.pdf
- OrCAD图文教程:把一个元件分多个部分画出来.doc
- OSPF 认证与配置实现.docx
- Os-04-1同步与互斥.pdf
- OS的信息系统性能测试方案研究.pdf
- OTIS服务器按键及快捷键说明.pdf
- outlook 2010如何使邮件直接保存到本地pst文件里.pdf
- OutLook邮件数据备份和恢复.doc
- 中考语文总复习语文知识及应用专题5仿写修辞含句子理解市赛课公开课一等奖省课获奖课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第二课《藏猫猫》精品课件.pptx
- 湖南文艺版(2024)新教材一年级音乐下册第三课《我向国旗敬个礼》精品课件.pptx
- 高中生物第四章生物的变异本章知识体系构建全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 整数指数幂市公开课一等奖省赛课微课金奖课件.pptx
- 一年级音乐上册第二单元你早全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级数学上册第二章实数27二次根式第四课时习题省公开课一等奖新课获奖课件.pptx
- 九年级物理全册11简单电路习题全国公开课一等奖百校联赛微课赛课特等奖课件.pptx
- 八年级语文下册第五单元19邹忌讽齐王纳谏省公开课一等奖新课获奖课件.pptx
- 2024年秋季新人教PEP版3年级上册英语全册教学课件 (2).pptx
最近下载
- 2024年(新高考2卷)数学第19题 教师比赛说课课件.pptx
- 广州市中考:2024年-2022年《语文》考试真题与参考答案.pdf
- 带头增强党性、严守纪律、砥砺作风等四个方面存在问题及整改材料.docx VIP
- 《保护眼睛》大班教案.pdf VIP
- 2022年皖北卫生职业学院单招综合素质题库及答案解析.docx
- 2022年高考真题——英语(全国乙卷).pdf VIP
- 摄影入门课件课件.pptx
- 2025年单招职业技能测试试卷(二).pdf VIP
- 2024廊坊市广阳区爱民东道街道社区工作者招聘考试真题题库及答案.docx VIP
- 《新能源汽车技术》课件——第二章 动力电池.pptx VIP
文档评论(0)