PHP底层设计及执行流程

php是一门应用专一,开发效率极高的一门语言,其弱类型的变量能省去程序员大量的定义变量、类型转换等的时间和精力。它是一种适用于web开发的动态语言。

php设计的原理和特点

多进程模型:这样能做到进程间互相不受影响,对于进程的资源利用更快速、便捷

弱类型语言:和强类型语言C、C++、java等语言不同,php中变量的类型并不是一开始就确定的,而是在运行时才确定的,可以隐式或显式的对其进行类型转换,这就使其在开发中非常的灵活,程序员无需关注变量类型的问题。

Zend引擎+ 组件(ext)的模式降低内部的耦合。

中间层(sapi)隔绝web

server 和php。

语法简单灵活,规范少,有利有弊。


层级体系

Zend引擎:Zend整体用C实现,是php的内核部分,它将php的代码翻译成可执行的opcode的,处理并实现相应的处理方法(原理:鸟哥的博客)、实现了基本的数据结构、内存分配及管理、提供了相应api方法供外部使用,是一切的核心。

Extensions:围绕着Zend引擎,extensions通过组件的方式提供各种基础服务,常用的内置函数array、标准库等都是通过extension来实现的,用户也可以根据需要实现自己的extension以达到功能扩展等目的如贴吧正在使用的 PHP中间层、富文本解析就是extension的典型应用)。

Sapi:Sapi全称Server Application Programing Interface, 也就是服务端应用编程接口,Sapi通过一些列钩子函数,使php可以和外围交互数据,这是PHP非常优雅和成功的一个设计,通过 sapi成功的将PHP本身和上层应用解耦隔离,PHP可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。

上层应用:这就是程序员编写的应用程序,通过不同的sapi方式得到各种各样的应用模式,如通过webserver实现web应用,在命令行下以脚本的方式运行等等

Sapi通过一些列的接口,使外部应用可以和php交换数据并可以根据不同的应用特点实现特定的处理方法,常见的sapi有:

apache2handler:以apache作为webserver,采用MOD_PHP模式运行时候的处理方式,也是现在应用最广泛的一种

cgi:这是webserver和php的另外一种交互方式,也就是fastcgi协议

cli:命令调试应用模式


待续。。。。

推荐阅读更多精彩内容