PHP7内核(一):发展史

PHP1
1994年,一位名叫Rasmus lerdorf的兄台为了在网上展示自己的履历和网页流量的统计,用Perl开发了一套脚本,后来因与日俱增的需求无法得到满足,lerdorf便使用c语言进行了重写,重写后的程序支持数据库的访问,以及web应用程序的简单开发,备受好评,随后便以Personal Home Page Tools为名发布了第一个版本。

PHP2
为了PHP的改进和快速发展,lerdorf在1995年6月8日将其开源,于是PHP2.0问世,并被命名为PHP/FI。随后,在经历了数次beta版本的发布,于1997年推出了官方正式版本。而此时,全世界已有50000个域名安装了PHP,占所有域名的1%。
PHP3
其实在PHP/FI官方版本发布之前,两位来自以色列的工程师Zeev Suraski和Andi Gutmans就已经着手于PHP解析器的重写,为PHP3.0打下了基础,所以PHP/FI发布之后,便开放了PHP3.0的测试,并于1998年6月正式发布。而此时的PHP被正式更名为PHP:Hypertext Preprocessor。
PHP3.0有强大的扩展性,除了可以给用户提供数据库、协议和API的基础结构外,还吸引了大量的开发人员加入,并提交新的模块,这也是PHP3.0获得巨大成功的关键。
PHP4
PHP3.0正式发布后,Zeev Suraski和Andi Gutmans开始改写PHP的内核,命名为Zend Engine(是Zeev和Andi的缩写),也就是我们熟知的Zend引擎。该引擎在1999年被引入PHP4.0,并在2000年正式发布。PHP4.0不仅拥有更好的性能,还支持了Session、输出缓冲等功能,吸引了大批开发者。此时安装PHP的网站已经达到了数百万,占据所有网站的20%。

PHP5
2004年7月13日,基于Zend Engine 2.0的PHP5公开发布,全面引入了面向对象机制,并保留了向下兼容性。随后5.3到5.6版本的发布,相继增加了命名空间、闭包、Traits、短数组等特性,使PHP语法越来越灵活,直到目前,仍然有许多网站使用PHP5.6。

PHP6
我们都知道,PHP并没有发布6.0,原因是曾有一群人创建了PHP6的项目,主要的目的是为PHP引擎增加Unicode支持,当时开发者们同时维护5和6的开发,慢慢的大家发现新功能都等着提交给6,而6因为开发速度慢导致很多新特性没法提交,状态很不理想,再后来6就没人开发了。最终经过PHP社群核心贡献者投票,超过7成的人同意最新的PHP版号将是PHP7而非PHP6,故PHP直接跳过了6.0版本。
PHP7
2014年,PHP7正式发布,Zend引擎被再次重写,并以Zend Engine 3.0 的身份亮相,使得PHP语言的性能得到大幅度提升,大量测试显示PHP7比PHP5.6在各种开源项目中有60%到200%的性能提升。
在这里值得一提的是,PHP7的核心开发人员,PHP5.4、PHP5.5的主要开发人员“惠新宸”,是PHP开发组核心成员,也是中国最具影响力的PHP技术专家,人送外号“鸟哥”。

PHP7内核(一):发展史的更多相关文章
- 跟厂长学PHP7内核(八):深入理解字符串的实现
在前面大致预览了常用变量的结构之后,我们今天来仔细的剖析一下字符串的具体实现. 一.字符串的结构 struct _zend_string { zend_refcounted_h gc; /* 字符串类 ...
- 跟厂长学PHP7内核(七):常见变量类型的基本结构
上篇文章讲述了变量的存储结构zval,今天我们就来学习一下几个常见变量类型的基本结构. 一.类型一览 zval中的u1.v.type用来存储变量的类型,而zval.value存储的是不同类型对应的值, ...
- 跟厂长学PHP7内核(六):变量之zval
记得网上流传甚广的段子"PHP是世界上最好的语言",暂且不去讨论是否言过其实,但至少PHP确实有独特优势的,比如它的弱类型,即只需要$符号即可声明变量,使得PHP入手门槛极低,成为 ...
- 深入剖析PHP7内核源码(二)- PHP变量容器
简介 PHP的变量使用起来非常方便,其基本结构是底层实现的zval,PHP7采用了全新的zval,由此带来了非常大的性能提升,本文重点分析PHP7的zval的改变. PHP5时代的ZVAL typed ...
- PHP7内核(八):深入理解字符串的实现
在前面大致预览了常用变量的结构之后,我们今天来仔细的剖析一下字符串的具体实现. 一.字符串的结构 struct _zend_string { zend_refcounted_h gc; /* 字符串类 ...
- PHP7内核(七):常见变量类型的基本结构
上篇文章讲述了变量的存储结构zval,今天我们就来学习一下几个常见变量类型的基本结构. 一.类型一览 zval中的u1.v.type用来存储变量的类型,而zval.value存储的是不同类型对应的值, ...
- PHP7内核(六):变量之zval
记得网上流传甚广的段子"PHP是世界上最好的语言",暂且不去讨论是否言过其实,但至少PHP确实有独特优势的,比如它的弱类型,即只需要$符号即可声明变量,使得PHP入手门槛极低,成为 ...
- 跟厂长学PHP7内核(一):发展史
PHP1 1994年,一位名叫Rasmus lerdorf的兄台为了在网上展示自己的履历和网页流量的统计,用Perl开发了一套脚本,后来因与日俱增的需求无法得到满足,lerdorf便使用c语言进行了重 ...
- 跟厂长学PHP7内核(三):源码目录结构
上篇文章我们已经介绍了源码分析工具的安装.配置以及调试方法,本文我们来讲述一下PHP源码的目录结构. 一.目录概览 以php-7.0.12为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...
随机推荐
- 达拉草201771010105《面向对象程序设计(java)》第四周学习总结
实验四类与对象的定义及使用 实验时间 2018-9-20 第一部分:理论知识 1.类与对象概念 (1)类是具有相同属性和方法的一类事物的抽象,是构造对象的模板或蓝图,由类构造对象的过程称为创建类的实例 ...
- Hexo+github如何搭建博客
前言 博客有第三方平台,也可以自建,比较早的有博客园.CSDN,近几年新兴的也比较多诸如:WordPress.segmentFault.简书.掘金.知乎专栏.Github Page 等等. 这次我要说 ...
- react-intl 实现 React 国际化多语言
效果预览 React Intl 国际化步骤 创建国际化资源文件 根据语言获取国际化资源 引入 react-intl 的 local data 创建 LocaleProvider 国际化上下文组件 创建 ...
- CSS+DIV自适应布局
CSS+DIV自适应布局 1.两列布局(左右两侧,左侧固定宽度200px;右侧自适应占满) 代码如下: <!doctype html> <html> <head> ...
- 华为物联网IoT学习笔记目录
实验准备: 1.<小熊派功能介绍> 2.<小熊派硬件分析> 3.<STM32Cube软件安装介绍> 4.<MDK软件安装介绍> 5.<华为 IoT ...
- 使用openxml提取word中的文本和图片并转为Html
使用openxml提取word中的文本和图片 使用 openXml 提取 word 中的 Text 和 Drawing 使用 openXml 将 word 中的文本和图片转为Html 使用 openX ...
- 图像IO
图像IO 潜伏期值得思考 - 凯文 帕萨特 在第13章“高效绘图”中,我们研究了和Core Graphics绘图相关的性能问题,以及如何修复.和绘图性能相关紧密相关的是图像性能.在这一章中,我们将研究 ...
- React-redux: React.js 和 Redux 架构的结合
通过Redux 架构理解我们了解到 Redux 架构的 store.action.reducers 这些基本概念和工作流程.我们也知道了 Redux 这种架构模式可以和其他的前端库组合使用,而 Rea ...
- windows服务搭建与删除简单介绍
安装windows服务: 1 VS的开发命令使用管理员权限打开, 2 installutl.exe /servicename="服务名称" "服务地址" 卸载 ...
- 使用synchronized修饰静态方法和非静态方法有什么区别
前言 最近被问到了这个问题,第一次回答的也是很不好,在此参考网上答案进行整理记录.供大家学习参考. Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法 ...