广州电脑培训_电脑培训班_电脑培训课程-北大青鸟电脑学校
当前位置:网站首页 > 热点问答 > 正文

刚入门php的小伙伴知道这些架构吗?

作者:黎发布时间:2020-10-17分类:热点问答浏览:35


导读:说起PHP,很多人会搬来Java这位业界老大,如果非要站在JAVA这边并用欣赏的眼光来看PHP,PHP相比Java的很显著优势之一就是快,不是性能的快,而是上手的快,开发的快,上线的快。

说起PHP,很多人会搬来Java这位业界老大,如果非要站在Java这边并用欣赏的眼光来看PHP,PHP相比Java的很显著优势之一就是快,不是性能的快,而是上手的快,开发的快,上线的快。

我们可以看到PHP由大大小小的模块组成,很明显的解耦。我们具体看四个主要模块:

Zend 引擎

Zend 引擎是 PHP4 以后加入 PHP 的,是对原有PHP解释器的重写,整体使用 C 语言进行开发,也就是说可以把PHP理解成用C写的一个编程语言软件,引擎的作用是将PHP代码翻译为一种叫opcode的中间语言,它类似于Java的ByteCode(字节码)。也可以把Zend引擎类比为Java中的jvm。

引擎对PHP代码会执行四个步骤:

00001. 词法分析 Scanning,将 PHP 代码转换为语言片段(Tokens)。

00002. 解析 Parsing Tokens 转换成简单而有意义的表达式。

00003. 编译 Compilation,将表达式编译成Opcode。

00004. 执行 Execution,顺序执行Opcode,每次一条,以实现PHP代码所表达的功能。

APC、Opchche 这些扩展可以将Opcode缓存以加速PHP应用的运行速度,使用它们就可以在请求再次来临时省略前三步。

引擎也实现了基本的数据结构、内存分配及管理,提供了相应的API方法供外部调用。

Extensions 扩展

常见的内置函数、标准库都是通过extension来实现的,这些叫做PHP的核心扩展,用户也可以根据自己的要求安装PHP的扩展。

SAPI

SAPI 是 Server Application Programming Interface 的缩写,中文为服务端应用编程接口,它通过一系列钩子函数使得PHP可以和外围交换数据,SAPI 就是 PHP 和外部环境的代理器,它把外部环境抽象后,为内部的PHP提供一套固定的,统一的接口,使得 PHP 自身实现能够不受错综复杂的外部环境影响,保持一定的独立性。

通过 SAPI 的解耦,PHP 可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。

上层应用

程序员编写的PHP程序,无论是 Web 应用还是 Cli 方式运行的应用都是上层应用,PHP 程序员主要工作就是编写它们。

下面是PHP的执行过程:

可以看出,PHP脚本执行之前都会去共享内存中看是否有OpCode的缓存,如果有就直接加载然后被Zend引擎直接执行,否则就需要先对脚本解析和编译并且将编译出的OpCode存入共享内存,方便下次调用。

OpCode被执行后会被SAPI进行处理,然后和前端页面整合压缩后再由服务器(通常为Apache或者Nginx)发送给浏览器显示在前端页面。这就是PHP脚本执行的过程

惠州哪里有学电脑的.jpg


热点问答排行
最近发表
标签列表