一张游览PHP内核迷宫的藏宝图

PHP内核就像一个迷宫,如果没有一个纵览全局的图,只是面对其中的一个点,就会像进了迷宫一样,走着走着就走到了死胡同。在这个迷宫里转悠了很久之后,最近得到了一张PHP藏宝图,然后看着这张图去游览PHP内核,顿时觉得这个景区的面貌清晰了许多。废话不说了,上图:

这张图包括两部分,分别对应PHP的启动过程,和PHP处理每个请求的过程。PHP的启动过程是一系列的初始化操作,建立处理请求时使用的各种全局变量:

Apache启动

=> sapi_startup

=> php_module_startup (PHP的主开关)

=> php_output_startup

=> zend_startup (启动Zend引擎)

=> register_ini_entries

=> php_ini_stream_wrappers

=> php_ini_register_extensions (启动动态加载的扩展)

=> zend_startup_modules

=> zend_startup_extensions

下面是处理每个请求时的流程:

php_handler

=> php_apche_request_ctor

=> zend_activate

=> zend_execute_scripts

=> zend_compile (语法分析、语义分析、生成oparray)

=> zend_execute (执行opcode)

=> zend_deactivate

进程退出时关掉zend、php:

sapi_shutdown

=> zend_shutdown

时间: 2024-10-23 04:39:29

一张游览PHP内核迷宫的藏宝图的相关文章

Linux内核转发技术

前言 在linux内核中,通常集成了带有封包过滤和防火墙功能的内核模块, 不同内核版本的模块名称不同, 在2.4.x版本及其以后的内核中, 其名称为iptables, 已取代了早期的ipchains和远古时期的ipfwadm. 在命令行中可以通过lsmod | grep -i iptable来查看当前加载的相关模块信息. iptables作为内核模块, 由一些信息包过滤表组成,这些表包含内核用来控制信息包过滤处理的规则集. 与此同时, iptables也作为用户空间(userspace)的一个管

获取当前游览器名称以及版本 以及富文本编辑器 时候 光标高度问题

function getBrowserInfo() { var agent = navigator.userAgent.toLowerCase(); var regStr_ie = /msie [\d.]+;/gi; var regStr_ff = /firefox\/[\d.]+/gi var regStr_chrome = /chrome\/[\d.]+/gi; var regStr_saf = /safari\/[\d.]+/gi; //IE if (agent.indexOf("msie

游览器渲染浅析

前提知识 游览器构成 游览器内核 游览器内核也称渲染引擎,主要有3种: Trident内核: IE Webkit内核:Chrome,Safari Gecko内核:FireFox 解析前的工作 DNS域名解析 建立TCP连接 发送HTTP请求 服务器处理请求 返回响应结果 关闭TCP连接 浏览器解析 关键渲染路径 浏览器从最初接收请求来的HTML.CSS.javascript等资源,然后解析.构建树.渲染布局.绘制,最后呈现给客户能看到的界面这整个过程--简单来说,就是对游览器渲染过程的描述. 渲

ARM Linux从Bootloader、kernel到filesystem启动流程

转自:http://www.veryarm.com/1491.html ARM Linux启动流程大致为:bootloader ---->kernel---->root filesystem.bootloader 是一上电就拿到cpu 的控制权的,而bootloader实现了硬件的初始化.bootloader俨然就成了Power on 之后”第一个吃螃蟹”的代码. 谈到这就得想到硬件机制是如何满足这个功能的了.CPU内部一般都集成小容量的SRAM (又叫stapping stone,垫脚石),

linux路由表命令

转自此大神http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html 留在好查阅 linux 路由表维护 查看 Linux 内核路由表 使用下面的 route 命令可以查看 Linux 内核路由表. # route Destination Gateway Genmask Flags Metric Ref Use Iface192.168.0.0 * 255.255.255.0 U 0 0 0 eth0169.254.0.0 * 255.

对进程、线程、应用程序域的理解

前几天面试的一道题是谈谈进程.线程.应用程序域的区别,虽然能说上来几点,但感觉理解的很肤浅.很不透彻,闲暇时从书箱里翻出尘封已久的<操作系统>(还好,毕业时偶没舍得卖),翻了翻进程的那一章.看之前我列出了下面三个问题:1. 这些概念(技术)出现的背景以及要解决的问题 (要干什么)2. 它们之间的联系与区别3. 三者之间的发展脉络 进程的出现:(复习功课嘛,就把相关的内容都看看了,哎,都忘的差不多了)  进程由操作系统创建.管理的,离开了操作系统也就不谈什么进程了,先看看操作系统的四个基本特征:

ARM 平台上的Linux系统启动流程

开始学习嵌入式开发就一直在使用Linux系统作为学习的平台,到现在无论是PC机还是ARM开发板都已经能顺利地跑起了Linux系统,但是对Linux 的启动流程还是不甚了解.于是开始各种百度谷歌,当然看到了各路大神写的介绍.总的来说就是:bootloader ---->kernel---->root filesystem,当然还介绍了哪个阶段完成了哪些工作.比如bootloader 是一上电就拿到cpu 的控制权的,而bootloader实现了硬件的初始化.bootloader俨然就成了powe

CSS中兼容的一面-----Hack

国庆了,出去玩耍,也有好长时间没有更新博客了.. 今天就和大家共享一篇技术博文吧.. CSS中兼容的一面-----Hack技术大全 兼容范围: IE:6.0+,FireFox:2.0+,Opera 10.0+,Sarari 3.0+,Chrome 参考资料: 各游览器常用兼容标记一览表: 标记 IE6 IE7 IE8 FF Opera Sarari [*+><] √ √ X X X X _ √ X X X X X \9 √ √ √ X X X \0 X X √ X √ X @media scr

网页兼容

标记 IE6 IE7 IE8 FF Opera Sarari [*+><] √ √ X X X X _ √ X X X X X \9 √ √ √ X X X \0 X X √ X √ X @media screen and (-webkit-min-device-pixel-ratio:0){.bb {}} X X X X X √ .bb , x:-moz-any-link, x:default X √ X √(ff3.5及以下) X X @-moz-document url-prefix()