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为例,看过源码的同学们应该发现源码目录多达十多个,下面是每个目 ...
随机推荐
- AF(操作者框架)系列(3)-创建第一个Actor的程序
这节课的内容,语言描述基本是无趣的,就是一个纯程序编写,直接上图了. 如果想做其他练习,可参考前面的文章: https://zhuanlan.zhihu.com/p/105133597 1. 新建一个 ...
- cocoapods iOS类库管理工具的安装与使用
CocoaPods是一个管理Swift和Objective-C的Cocoa项目的依赖工具.他可以优雅地帮助你扩展你的项目.简单的说,就是替你管理Swift和Objective-C的Cocoa项目的第三 ...
- Docker实战之Zookeeper集群
1. 概述 这里是 Docker 实战系列第四篇.主要介绍分布式系统中的元老级组件 Zookeeper. ZooKeeper 是一个开源的分布式协调服务,是 Hadoop,HBase 和其他分布式框架 ...
- 【Amaple教程】5. 插件
Amaple 拥有非常强大插件功能,这也是它的突出功能之一,Amaple插件一般表现为功能块(函数)或功能块(包含一系列函数和属性的Object对象),它除了支持Amaple规范定义的插件外,还支持所 ...
- 【django】 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
如果是后台上传文件: setting配置: STATIC_URL = '/static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ...
- 利用iTunes给MP3添加专辑插图
利用iTunes给MP3添加专辑插图 打开iTunes 准备好没有专辑插图的mp3文件和插图 将准备好的mp3文件拖入iTunes 右键菜单选择专辑信息选项 在专辑信息里面选择插图 点击左下角的添加插 ...
- Iterator接口(遍历器)和for/of循环
在javascript中表示“集合”的数据结构,主要有Array,Object,Map,Set. Iterator(遍历器)接口是为各种不同的数据结构提供了统一的访问机制.任何数据结构具有Iterat ...
- 3DGIS+BIM集成与智慧城市应用
ZTMap3D是基于网络的三维地理信息系统平台软件,利用 ZTMap3D能够实现三维地理信息和虚拟现实,是数字化地球和数字化城市建设的基础平台. BIM(building information mo ...
- CVPR 2020 三篇有趣的论文解读
作者 | 文永亮 学校 | 哈尔滨工业大学(深圳) 研究方向 | 视频预测.时空序列预测 目录 AdderNet - 其实不需要这么多乘法 Deep Snake for Real-Time Insta ...
- 安装部署hyperledger fabric1.0
安装环境 CentOS7 1.安装Docker Docker Hub在国外,安装会较慢,可用国内镜像DaoCloud.可执行以下命令安装Docker. sudo yum install -y yum- ...