SlideShare ist ein Scribd-Unternehmen logo
1 von 19
PHP and Zend Internal I
    体系结构及生命周期



       夜沨@淘宝
Perface
• 研究内核不会一夜之间让你成为牛人
• PHP和Zend的源码并不是尽善尽美
• Not Only PHP
• 会谈方法论问题(例如何时何处适合使用
  PHP),不谈宗教问题(例如PHP和Lua哪
  个好),保持客观中立,我不是PHP布道
  者
• 干货,Talk Difference
Web编程断代史…
Web编程断代史…
• 静态页面时代

            GET /index.html HTTP/1.1 …

  Client                                 Web Server
            HTTP/1.1 200 OK …


                                                 本地I/O或socket




                                          Index.html
Web编程断代史…
• CGI时代

            GET /index.html?id=3 HTTP/1.1 …

   Client                                      Web Server
            HTTP/1.1 200 OK …


                                                       CGI - fork & execve


                                     socket
                      Database                CGI Application
Web编程断代史…
• 动态脚本时代

             GET /index.html?id=3 HTTP/1.1 …

    Client                                     Web Server
             HTTP/1.1 200 OK …


                                                       CGI - fork & execve



 Database
                      ?                        CGI Interface
                                                Application
走近一步看PHP…
走近一步看PHP…
• PHP和Zend的体系结构




                     CGI Interface
                      Application
        PHP Core


       Zend Engine
走近一步看PHP…
• PHP和Zend的体系结构

          PHP
             SAPI


           PHP Core


          Zend Engine
走近一步看PHP…
• PHP的执行流程
        SAPI                       PHP Core                 Zend Engine
  Startup
            Set HTTP Environment

            Start PHP Core
                                        MINIT
                                        RINIT
                                        Start Zend Engine
                                                                  Compile

                                                                  Execute

                                        RSHUTDOWN
                                        MSHUTDOWN
Shutdown
接口模式及生命周期模式…
接口模式及生命周期模式…
• CGI的困局 – One Request One Process

               GET /index.html?id=3 HTTP/1.1 …

      Client                                     Web Server
               HTTP/1.1 200 OK …


                                                       CGI - fork & execve



   Database
                     PHP                            SAPI
接口模式及生命周期模式…
• 新的接口模式

Web Server Extension – Apache mod_php


FastCGI – FPM
接口模式及生命周期模式…
• CGI/CLI

             Process Startup
                MINIT
                 RINIT
                SCRIPT
             RSHUTDOWN
             MSHUTDOWN
            Process Shutdown
接口模式及生命周期模式…
• Single Process Multirequest
                   Process Startup
                       MINIT
                        RINIT
                       SCRIPT
                    RSHUTDOWN
                         …
                       RINIT
                      SCRIPT
                   RSHUTDOWN
                   MSHUTDOWN
                  Process Shutdown
接口模式及生命周期模式…
• Multiprocess
     Process Startup    Process Startup    Process Startup
         MINIT              MINIT              MINIT
          RINIT              RINIT              RINIT
         SCRIPT             SCRIPT             SCRIPT
      RSHUTDOWN          RSHUTDOWN          RSHUTDOWN
           …                  …                  …
         RINIT              RINIT              RINIT
        SCRIPT             SCRIPT             SCRIPT
     RSHUTDOWN          RSHUTDOWN          RSHUTDOWN
     MSHUTDOWN          MSHUTDOWN          MSHUTDOWN
    Process Shutdown   Process Shutdown   Process Shutdown
接口模式及生命周期模式…
• Multithreaded
                   Process Startup
                       MINIT
          RINIT         RINIT            RINIT
         SCRIPT        SCRIPT           SCRIPT
      RSHUTDOWN     RSHUTDOWN        RSHUTDOWN




                   MSHUTDOWN
                  Process Shutdown
What is Next?
•   线程安全模型(ZTS & TSRM)
•   内核类型系统及表环境
•   垃圾回收机制(GC)
•   SAPI结构分析
•   PHP扩展模块开发
•   与内核相关的优化
•   OpCode
•   ……
Thanks 

  Q&A

Weitere ähnliche Inhalte

Ähnlich wie PHP and Zend Internal I - 体系结构及生命周期

从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践
Na Lee
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
q3boy
 
http flood and mobile app
http flood and mobile apphttp flood and mobile app
http flood and mobile app
im_yunshu
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
丁 宇
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
bj_qa
 
Lvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukongLvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukong
Michael Zhang
 
杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheel杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheel
drewz lin
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试
tbmallf2e
 

Ähnlich wie PHP and Zend Internal I - 体系结构及生命周期 (20)

从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
Html01
Html01Html01
Html01
 
使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2使用Big pipe提升浏览速度v2
使用Big pipe提升浏览速度v2
 
02.python.开发最佳实践
02.python.开发最佳实践02.python.开发最佳实践
02.python.开发最佳实践
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
http flood and mobile app
http flood and mobile apphttp flood and mobile app
http flood and mobile app
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群Open cdn快速部署你的私有cdn集群
Open cdn快速部署你的私有cdn集群
 
广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf广告技术部自动化测试介绍.pdf
广告技术部自动化测试介绍.pdf
 
Lvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukongLvs在大规模网络环境下的应用pukong
Lvs在大规模网络环境下的应用pukong
 
Sdn 之旅 open suse_asia_summit_20151206
Sdn 之旅 open suse_asia_summit_20151206Sdn 之旅 open suse_asia_summit_20151206
Sdn 之旅 open suse_asia_summit_20151206
 
使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity使用Big pipe提升浏览速度 wk_velocity
使用Big pipe提升浏览速度 wk_velocity
 
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
Accelerating or Complicating PHP execution by LLVM Compiler Infrastructure
 
杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheel杜嵩 Arch summit2012 dusong@freewheel
杜嵩 Arch summit2012 dusong@freewheel
 
使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度使用Bigpipe提升浏览速度
使用Bigpipe提升浏览速度
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
 
纵览Loadrunner核心功能
纵览Loadrunner核心功能纵览Loadrunner核心功能
纵览Loadrunner核心功能
 
前端性能优化&测试
前端性能优化&测试前端性能优化&测试
前端性能优化&测试
 
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
探索 ISTIO 新型 DATA PLANE 架構 AMBIENT MESH - GOLANG TAIWAN GATHERING #77 X CNTUG
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvements
 

PHP and Zend Internal I - 体系结构及生命周期