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为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...
随机推荐
- 一文搞懂JVM内存结构+GC
一.jvm是干什么的? 大家都知道java是跨平台语言,一次编译可以在不同操作系统上运行,怎么做到的呢,看下图: javac把写的源代码(java文件),编译成字节码(class文件),字节码部署到l ...
- 一文搞懂jvm内存结构
一.jvm是干什么的? 大家都知道java是跨平台语言,一次编译可以在不同操作系统上运行,怎么做到的呢,看下图: javac把写的源代码(java文件),编译成字节码(class文件),字节码部署到l ...
- 什么是HDFS?算了,告诉你也不懂。
前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 上一篇已经讲解了「大数据入门」的相关基础概念和知 ...
- 小技巧(一):将文本文件txt或网页快捷方式固定到win10开始菜单
win10不知道怎么回事不支持将文本文件和网页快捷方式固定到开始菜单 解决方法: 利用cmd 创建一个快捷方式: 路径:cmd /A /C C:\Users\Admin\Desktop\test.t ...
- [React技术内幕] setState的秘密
对于大多数的React开发者,setState可能是最常用的API之一.React作为View层,通过改变data从而引发UI的更新.React不像Vue这种MVVM库,直接修改data并不能视图的改 ...
- React Native 在 Airbnb(译文)
在Android,iOS,Web和跨平台框架的横向对比中,React Native本身是一个相对较新且快速开发移动的平台.两年后,我们可以肯定地说React Native在很多方面都是革命性的.这是移 ...
- Django开发框架知识点
一.什么是web服务器(了解) 当我们在浏览器输入URL后,浏览器会先请求DNS服务器,获得请求站点的 IP 地址.然后发送一个HTTP Request(请求)给拥有该 IP 的主机,接着就会接收到服 ...
- 《一步步成为 Hacker_Day 01》
环境搭建 传统运行模式 - 一台机器同时只能运行一个操作系统 |:----------|----------:| | 应用程序 | 应用程序 | |:----------|----------:| | ...
- 当AI遇上K8S:使用Rancher安装机器学习必备工具JupyterHub
Jupyter Notebook是用于科学数据分析的利器,JupyterHub可以在服务器环境下为多个用户托管Jupyter运行环境.本文将详细介绍如何使用Rancher安装JupyterHub来为数 ...
- 深入解析Underscore.js源码架构
Underscore.js是很有名的一个工具库,我也经常用他来处理对象,数组等,本文会深入解析Underscore源码架构,跟大家一起学习下他源码的亮点,然后模仿他写一个简单的架子来加深理解.他的源码 ...