5G 时代,万端互联,技术的变化,从分布式到微服务,PHPer 出现了很多质疑的声音,到底还能走多久,Laravel、Node、Docker 技术的大爆炸,对 PHPer 提出了新的破局的新方向。
万端互联,唯 PHPer 可担此重任,破局重生。
在本场 Chat 中,会讲到如下内容:
- 深入内部从根本上解释PHP是什么
- 5G 时代,PHP 能为你做什么
- 数据结构倒影里的 PHP 语言
- 万能的数组和优雅的面向对象编程
- 搭上网络的列车,重新定义世界上最好的语言
- 万端互联,没你不行
开源 PHP 社区解散以后,被语言圈里世界上最好的语言,出现了很多质疑的声音,粉碎质疑最好的发声就是用好的、客观的来叙述,php7 、composer 、swoole 的结合,我相信 PHP 是未来 5G 时代的最佳选择。
PHP 是什么就是一个用 C 语言实现包含大量组件模块的软件框架。是一个强大的 UI 框架,拥有开源、简单、高效、易部署的诸多优点。

PHP 动态语言执行过程:拿到一段代码后,经过词法解析、语法解析等阶段后,源程序会被翻译成一个个指令(opcodes),然后 ZEND 虚拟机顺次执行这些指令完成操作。PHP 本身是用 C 实现的,因此最终调用的也是 C 的函数,实际上,我们可以把 PHP 看做一个 C 开发的软件。
PHP 的分层体系
在网络协议的知识体系里,分层是一个很重要,但是常常被忽略的一个概念。上图是协议中的分层模型,忽略网关的红线。
PHP 从下倒上是一个 4 层体系:
- Zend 引擎:Zend 整体用纯 C 实现,是 PHP 的内核部分,他将 PHP 代码翻译(词法、语法解析等一系列编译过程)为可执行 opcode 的处理并实现相应的处理方法、实现了基本的数据结构(如:hash_table、OO)、内存分配机制及管理、提供了相应的 api 方法供外部调用,是一切的核心,所有的外围功能均围绕 Zend 实现。
- Extensions:围绕着 Zend 引擎,extensions 通过组件式的方式提供各种基础服务,我们常见的各种内置函数(array 系列)、标准库等都是通过 extension 来实现 CGI 即通用网关接口,用户也可以根据需要实现自己的 extension 的典型应用)。
- Sapi:Sapi 全称 Server Application Programming Interface,也就是服务端应用编程接口,Sapi 通过一系列钩子函数,使得 PHP 可以和外围交互数据,这是 PHP 非常优雅和成功的设计,通过 sapi 成功的将 PHP 本身和上层应用解耦隔离,PHP 可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。
- 上层应用:这就是我们平时编写的 PHP 程序,通过不同的 spai 方式得到各种各样的应用模式,如何通过 webserver 实现 web 应用、在命令行下已脚本方式运行等等。
博主梦话:印象里在 win 上开发的时候,有个 ext 文件夹,里面装载着各种类库,就是 Extensions 层。
服务端运行 - CGI/FastCGI互联网上的 Web 服务都属于 html,静态资源分布,随着互联网的发展,后来出现了像 asp、jsp、php 这种动态语言,动态语言的特点是需要 Web 服务器的解析 Cgi 就是 Web 服务器和动态语言通信的网关。

CGI 即通用网关接口(Common Gateway Interface),它是动态语言的产物,是负责 Web 服务与 PHP 通信的接口,CGI 方式在遇到连接请求(用户 请求)先要创建 cgi 的子进程,激活一个 CGI 进程,然后处理请求,处理完后结束这个子进程。这就是 fork-and-execute 模式。所以用 cgi 方式的服务器有多少连接请求就会有多少 cgi 子进程,子进程反复加载是 cgi 性能低下的主要原因。
在这个基础上产生了 FastCGI,FastCGI 像是一个常驻(long-live)型的 CGI,它可以一直执行着,只要激活后,不会每次都要花费时间去 fork 一 次。PHP 使用 PHP-FPM(FastCGI Process Manager),全称 PHP FastCGI 进程管理器进行管理。
从数据结构上看 PHP
提起一个编程语言,如果只是会简单的应用是难以真正的理解,要分析所在的数据结构,用 debugzvaldebug 函数打印变量会得出类型,值、和引用数的三个结构体。


说一个语言的时候,不得不说语言的数据结构,PHP 中对数据操作的函数有很多,它主要依赖于链表和散列表(Hash Table)的结构实现,一般链表和数据都会混合使用,如果单纯地采用链表的话,时间复杂度只能是 O(n)。如果我们将散列表和链表两种数据结构组合使用,可以将这三个操作的时间复杂度都降低到 O(1)。
万能的数组PHP 的操作便捷的优点集中体现在对数组的操作上,PHP 对数组、链表、栈等诸多数据结构类型都有很大的优点,对排序算法有更好的支持,数组的系统函数可以做很多功能类的组合,以求用最简单的代码实现方式来说明数据的结构和算法。用下面的代码做说明:
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?