CODE, ARCHITECTURE & AI

TIPI.

15 篇记录保持好奇,慢慢积累

TIPI020202-嵌入式PHP

从第一章中对PHP源码目录结构的介绍以及PHP生命周期章节中可以看出,嵌入式PHP类似CLI,是SAPI接口的另一种实现。 一般情况下,它的一个请求的生命周期也会和其它的SAPI一样:模块初始化=>请求初始化=>处理请求=>关闭请求=>关闭模块。当然,这只是理想情况。 但是嵌入式PHP的请求可能包括一段或多段代码,这就导致了嵌入式PHP的特殊性。 对于嵌入式…
继续阅读 ↗

TIPI020200-SAPI概述

前一小节介绍了PHP的生命周期, 所有的请求都是通过SAPI接口实现的. 在源码的SAPI目录存放了PHP对各种服务器抽象层的代码,例如命令行程序的实现, mod_php的apache模块实现以及fastcgi的实现等等. 在各个服务器抽象层之间遵守着相同的约定,这里我们称之为SAPI接口。每个服务器都需要实现各自己的_sapi_module_struct结…
继续阅读 ↗

TIPI0201–PHP生命周期和Zend引擎

一切的开始: SAPI接口 通常我们编写PHP Web程序都是通过Apache或者Nginx这类Web服务器来测试脚本. 或者在命令行下通过php程序来执行PHP脚本. 执行完成脚本后,服务器应答,浏览器显示应答信息,或者在命令结束后在标准输出显示内容. 我们很少关心PHP解释器在哪里. 虽然通过Web服务器和命令行程序执行 脚本看起来很不一样. 实际上她们…
继续阅读 ↗

TIPI0102--PHP源码结构、阅读代码方法

第二节 PHP源码结构、阅读代码方法 PHP源码目录结构: 俗话讲:大巧不工。PHP的源码在结构上非常清晰甚至简单。下面,先简单介绍一下PHP源码的目录结构。 build : 源码编译相关文件,包括buildconft等sh文件,还有一些awk的脚本。 ext 官方扩展目录,包括了绝大多数PHP的函数的定义和实现,如array系列,pdo系列,spl系列等函…
继续阅读 ↗

TIPI0103--PHP实现中的常用代码

第三节 PHP实现中的常用代码 在PHP的源码中经常会看到一些宏或一些对于刚开始看源码的童鞋比较纠结的代码。这里提取中间的一些进行说明。 1. 关于##和# 在PHP的宏定义中,最常见的要数双井号。 双井号 在C语言的宏中,"##"被称为 连接符 (concatenator),用来把两个语言符号(Token)组合成单个语言符号。这里的语言符号不一定是宏的变量…
继续阅读 ↗

TIPI0101-环境搭建

第一节 环境搭建 在开始学习PHP实现之前, 我们首先需要一个实验和学习的环境. 下面介绍一下怎样在*nix环境下准备和搭建PHP环境. (*nix指的是类Unix环境,比如各种Linux发行版,FreeBSD, OpenSolaris, Mac OS X等操作系统) 1.获取PHP源码 为了学习PHP的实现,首先我们要下载源代码.下载源码首选是去 PHP官…
继续阅读 ↗