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内核(一):发展史的更多相关文章

  1. 跟厂长学PHP7内核(八):深入理解字符串的实现

    在前面大致预览了常用变量的结构之后,我们今天来仔细的剖析一下字符串的具体实现. 一.字符串的结构 struct _zend_string { zend_refcounted_h gc; /* 字符串类 ...

  2. 跟厂长学PHP7内核(七):常见变量类型的基本结构

    上篇文章讲述了变量的存储结构zval,今天我们就来学习一下几个常见变量类型的基本结构. 一.类型一览 zval中的u1.v.type用来存储变量的类型,而zval.value存储的是不同类型对应的值, ...

  3. 跟厂长学PHP7内核(六):变量之zval

    记得网上流传甚广的段子"PHP是世界上最好的语言",暂且不去讨论是否言过其实,但至少PHP确实有独特优势的,比如它的弱类型,即只需要$符号即可声明变量,使得PHP入手门槛极低,成为 ...

  4. 跟厂长学PHP7内核(三):源码目录结构

    上篇文章我们已经介绍了源码分析工具的安装.配置以及调试方法,本文我们来讲述一下PHP源码的目录结构. 一.目录概览 以php-7.0.12为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...

  5. 跟厂长学PHP7内核(四):生命周期之开始前的躁动

    上一章我们对PHP的源码目录结构有了初步了解,本章我们继续从生命周期的维度对PHP进行剖析. 一.概览 生命周期是什么呢?你可以把它看作执行过程,PHP的生命周期也就是它从开始执行到结束执行的过程. ...

  6. 跟厂长学PHP7内核(二):源码分析的环境与工具

    本文主要介绍分析源码的方式,其中包含环境的搭建.分析工具的安装以及源码调试的基本操作. 一.工具清单 PHP7.0.12 GDB CLion 二.源码下载及安装 $ wget http://php.n ...

  7. 跟厂长学PHP7内核(五):系统分析生命周期

    上篇文章讲述了模块初始化阶段之前的准备工作,本篇我来详细介绍PHP生命周期的五个阶段. 一.模块初始化阶段 我们先来看一下该阶段的每个函数的作用. 1.1.sapi_initialize_reques ...

  8. 十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见)

    原文:十天学Linux内核之第十天---总结篇(kconfig和Makefile & 讲不出再见) 非常开心能够和大家一起分享这些,让我受益匪浅,感激之情也溢于言表,,code monkey的 ...

  9. 十天学Linux内核之第九天---向内核添加代码

    原文:十天学Linux内核之第九天---向内核添加代码 睡了个好觉,很晚才起,好久没有这么舒服过了,今天的任务不重,所以压力不大,呵呵,现在的天气真的好冷,不过实验室有空调,我还是喜欢待在这里,有一种 ...

随机推荐

  1. -webkit-css

    WebKit CSS: 1.“盒模型”的具体描述性质的包围盒块内容,包括边界,填充等等. .test{ -webkit-border-bottom-left-radius: radius; -webk ...

  2. Java开发者应该列入年度计划的5件事

    本文写了我今年计划要做的5件事.为了能跟踪计划执行的进度,就把这些事都列了出来.我觉得这些事对其它Java开发者而言也是不错的参考方向. 1.开发一个应用,通过Java来操作一种NoSQL数据库实现存 ...

  3. input限制

    转载,暂未使用,可以借鉴. 出处:http://blog.csdn.net/a13590394462/article/details/73943785

  4. HDU1505 City Game 悬线法

    题意: 给出一个像这样的矩阵 R F F F F F F F F F F F R R R F F F     F F F F F F F F F F F F 求F组成的最大子矩阵(面积最大) 有多组数 ...

  5. 树形dp(A - Anniversary party HDU - 1520 )

    题目链接:https://cn.vjudge.net/contest/277955#problem/A 题目大意:略 具体思路:刚开始接触树形dp,说一下我对这个题的初步理解吧,首先,我们从根节点开始 ...

  6. Vue 项目添加 promise polyfill

    1. 安装依赖 npm install es6-promise --save 2. 在 main.js 上面引入: import 'es6-promise/auto'

  7. perl6: hash小笔记

    > ,,, { => , => } > my $a = :%h h => { => , => } > $a.perl :h({, }) > my ...

  8. 84.VMware Tools安装——设置共享文件

    一.安装VMware Tools 1.如图所示,点击安装 2.出现如下界面,将VMwareTools-9.6.2-1688356.tar.gz安装包复制到主文件夹下 3.输入命令tar -zxvf V ...

  9. 用Qemu模拟vexpress-a9 (一) --- 搭建Linux kernel调试环境【转】

    转自:http://www.cnblogs.com/pengdonglin137/p/5023342.html#_label2 阅读目录(Content) 环境介绍: 下载Linux内核 安装arm的 ...

  10. Nginx - Header详解

    1. 前言 通过 HttpHeadersModule 模块可以设置HTTP头,但是不能重写已经存在的头,比如可能相对server头进行重写,可以添加其他的头,例如:Cache-Control,设置生存 ...