php底层结构原理简析
用了这么多年php,底层原理我其实自己还是没完全吃透。这里简单记录一下php的底层结构和工作原理,用于记录:
php是一种适用于web开发的动态弱类型语言,它的底层是用c语言实现的。
1、特点:
多进程模型:php是多进程模型,各请求之间互不干涉,这样保证了每一个请求不会对整个服务有巨大影响,当然现在的php有很多方法来实现多进程模型。
弱类型语言:和c、Java、等等等语言类型不同,它属于弱类型语言,一个变量的类型并不是一开始就确定不变的,只有在运行到最后才能确定变量类型。
Zend 引擎 + Ext 扩展 的模式降低了内部耦合,可以方便的为PHP本身增加功能和去除功能。语法简单灵活,没有什么太严格规范2、PHP的架构:
以目前的 PHP 主流版本 PHP7 和 PHP5 来说架构是如上图所示,主要有四层体系构成,从下到上依次是 Zend 引擎、Extensions 扩展、SAPI 接口、Application。
Zend引擎
Zend引擎整体是纯C语言实现的,是php的内核部分,PHP的代码编译处理、基本的数据结构、内存分配管理、相应的api方法都是由它提供的,php的一切核心和外围功能都是围绕zend实现。
Extensions:
围绕zend引擎,Extensions 通过组件方式提供各种基础服务,我们常见的内置函数、标准库等都是通过extensions来实现的,开发人员也可以根据自己的需要开发实现自己的Extensions扩展。
SAPI
SAPI 是 Server Application Programming Interface 的缩写,中文为服务端应用编程接口,它通过一系列钩子函数使得PHP可以和外围交换数据,SAPI 就是 PHP 和外部环境的代理器,它把外部环境抽象后,为内部的PHP提供一套固定的,统一的接口,使得 PHP 自身实现能够不受错综复杂的外部环境影响,保持一定的独立性。
通过 SAPI 的解耦,PHP 可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。
Application
程序员编写的PHP程序,无论是 Web 应用还是 Cli 方式运行的应用都是上层应用,PHP 程序员主要工作就是编写它们
嗯暂时先记录这么多吧!简单了解下结构