• PHP内核之旅-1.生命周期


    PHP 内核之旅系列

    1.SAPI接口

    PHP具体应用的编程接口。

    2.开始和结束

      PHP开始执行以后会经过两个主要的阶段:

        处理请求之前的开始阶段和请求之后的结束阶段。

          1.1开始阶段:

            1.1.1 模块初始化阶段(MINT),只进行一次。

            1.1.2 模块激活阶段(RINIT),PHP会调用所有模块的RINIT函数

          1.2结束阶段(脚本执行到末尾或者通过调用exit()或die()函数,PHP都将进入结束阶段)

            1.2.1 停用模块(RSHUTDOWN,对应RINIT)

            1.2.2 关闭模块(MSHUTDOWN,对应MINIT),Web服务器退出或者命令行脚本执行完毕退出时

    3.单进程SAPI生命周期

      CLI/CGI模式的PHP属于单进程的SAPI模式。处理一次请求后就关闭。

    在各个阶段之间PHP还做了很多工作。

    (1)启动

    (2)初始化若干全局变量

    (3)初始化若干常量

    (4)初始化Zend引擎和和性组建

    (5)解析php.ini

    (6)全局操作函数的初始化

    (7)初始化静态构建的模块和共享模块(MINIT)

    (8)禁用函数和类

    (9)ACTIVATION

    (10)激活Zend引擎

    (11)激活SAPI

    (12)环境初始化

    (13)模块请求初始化

    (14)运行

      php_execute_script函数包含了运行PHP脚本的全部过程

    (15)DEACTIVATION

    (16)flush

      sapi_flush将最后的内容刷新出去

    (17)关闭Zend引擎

    4.多进程SAPI生命周期

    5.Zend引擎

    Zend引擎是PHP实现的核心,提供了语言实现上的基础设施。

      PHP的语法时限,脚本的编译运行环境,扩展机制以及内存管理。

      很多PHP扩展都是使用Zend API,而Zend正是PHP语言本身的实现,PHP只是使用Zend这个内核来构建PHP语言的。

    参考资料:http://www.php-internals.com/book/?p=chapt02/02-01-php-life-cycle-and-zend-engine


    作  者: Jackson0714
    出  处:http://www.cnblogs.com/jackson0714/
    关于作者:专注于微软平台的项目开发。如有问题或建议,请多多赐教!
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
    特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是作者坚持原创和持续写作的最大动力!

  • 相关阅读:
    江苏高考的程序题
    visio使用小记
    debian+postfix+dovecot+squirrelmail安装配置笔记
    System.Net.Mail
    DBHelper
    朝发白帝城
    《计算机网络》复习题2010
    mvc3在view中获取是否有验证错误
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.
    ASP.NET MVC3 Model验证总结
  • 原文地址:https://www.cnblogs.com/jackson0714/p/PHP_1.html
Copyright © 2020-2023  润新知