《细说PHP》 第四版 样章 第二章 PHP的应用与发展 4

2.4  PHP的发展

最初创建时,PHP是一个简单的用Perl语言编写的程序,只是为了统计自己的网站有多少访问者。后来又用C语言重新编写,多年来,PHP经过无数开源贡献者的不断迭代,历经数个版本,已经成为当前最热门的Web开发语言。像Facebook、淘宝等早期都是用PHP写的,在中国,PHP在百度、新浪、腾讯等大型互联网公司中应用都比较多。

 

2.4.1  PHP的诞生

1994年丹麦人Rasmus Lerdorf(雷斯莫斯·勒道夫)创建了PHP,最初只是一套简单的 Perl 脚本,用来跟踪访问他主页的人们的信息。他给这一套脚本取名为“Personal Home Page Tools”。后来他又用C语言重新编写,包括可以访问数据库。在1995年以Personal Home Page Tools(PHP Tools)开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0。

在这个早期的版本中,只提供了像访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要求增加一些特性,比如循环语句和数组变量等。

 

2.4.2  PHP的迭代过程

PHP从诞生到现在已经有20多年的历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷,Node.js、Go、Python不断地在挑战PHP的地位。PHP语言之所以能有今天的地位,得益于其设计者一直遵从实用主义,将技术的复杂性隐藏在底层。PHP一直在积极地维护和升级,虽然每个语言都有缺点,有些公司或开发者喜新厌旧地尝试各种新语言,而全球仍然有成千上万的PHPer的力量支持PHP,并且有Zend公司进行背书,PHP 必定也会与时俱进地迭代和打磨。到现在的PHP 7版本,开发组对性能要求极致的理念,对其进行了翻天覆地的更新就已经证明了这一点。PHP的迭代历程如下。

Ø 第2版用C语言重写并命名为PHP/FI

在1995年年中,新的成员加入开发行列,PHP 2.0发布了。第2版定名为PHP/FI(Form Interpreter)。PHP/FI加入了对数据库mSQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年年底,有1.5万多个网站使用PHP/FI;到1997年,PHP/FI 2.0也就是它的C语言实现的第2版在全世界已经有几千个用户和大约5万个域名安装,大约是所有域名的1%。但是那时只有几个人在为该项目撰写少量的代码,它仍然只是一个人的工程。PHP/FI 2.0 在经历了数个 beta 版本的发布后,于1997年11月发布了官方正式版本。

Ø 两位以色列开发者加入并重新命名PHP3

而在1997年中,开始了第3版的开发计划,两位以色列人Andi Gutmans和Zeev Suraski在为一所大学的项目中开发电子商务程序时发现 PHP/FI 2.0 功能明显不足,于是他们重写了代码。经过Rasmus,Andi和Zeev一系列的努力,考虑到 PHP/FI 已存在的用户群,他们决定联合发布PHP 3.0作为PHP/FI 2.0的官方后继版本,而第3版就直接定名为PHP 3.0。而 PHP/FI 2.0 的进一步开发几乎终止了。PHP 3.0是类似于当今PHP语法结构的第一个版本,一个最强大的功能是它的可扩展性。除了给最终用户提供数据库、协议和API的基础结构,它的可扩展性还吸引了大量的开发人员加入并提交新的模块。后来证实,这是PHP 3.0取得巨大成功的关键。PHP 3.0 中的其他关键功能包括面向对象的支持和更强大和协调的语法结构。这个全新的语言伴随着一个新的名称发布,它从PHP/FI 2.0的名称中移去了暗含“本语言只限于个人使用”的部分,它被命名为简单的缩写“PHP”。这是一种递归的缩写,它的全称是——PHP: Hypertext Preprocessor。约9个月的公开测试后,官方于1998年6 月正式发布PHP 3.0。

PHP 3.0跟Apache服务器紧密结合的特性,加上它不断地更新及加入新的功能;它几乎支持所有主流与非主流数据库;高速的执行效率,使得PHP在1999年中的使用网站超过了15万。这时PHP的源代码完全公开,在“开源”意识增长的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX、Linux或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程序设计方面有着更好的支持。

Ø 引入“Zend 引擎”并成立了Zend公司

1998年的冬天,PHP 3.0 官方发布不久,Zeev Suraski和Andi Gutmans 开始重新编写 PHP 代码。设计目标是增强复杂程序运行时的性能和PHP自身代码的模块性。PHP 3.0的新功能和广泛的第三方数据库、API的支持使得这样程序的编写成为可能,但是PHP 3.0没有高效处理如此复杂程序的能力。

新的被称为“Zend”(这是Zeev和And 的缩写)的引擎,成功地实现了设计目标,并在 1999 年年中首次引入 PHP。由Zeev和Andi两个人创建了Zend公司,由于他们的国际技术的权威性,Zend公司和他的创建者在PHP以及开源团体中持续处于领导的核心地位,对于PHP的迅猛发展起到了强有力的推动作用。

基于Zend引擎并结合了更多新功能的 PHP 4.0,于2000年5月发布了官方正式版本。整个脚本程序的核心大幅改动,让程序的执行速度,满足更快的要求。在最佳化之后的效率,已较传统 CGI 或者 ASP 等程序有更好的表现。而且还有更强的新功能、更丰富的函数库。除了更高的性能以外,PHP 4.0 还包含了其他一些关键功能,例如支持更多的 Web 服务器、HTTP Sessions 支持、输出缓冲、更安全地处理用户输入的方法、一些新的语言结构等。

Ø 从PHP 5开始支持面向对象

PHP 5经过长时间的开发及多个预发布版本后,于2004年7月发布正式版本。其核心是Zend引擎2代,引入了新的对象模型和大量新功能,可以使用面向对象的思想进行编程,这也是PHP在编程领域的又一个新的突破。虽然PHP 5.0没有带来实质性的性能提升,并且在某些情况下甚至比PHP 4更慢,一个由Dmitry Stogov 领导的团队在社区的大力帮助下已经在后续版本中不断优化语言,在 PHP 5.6 发布的时候,在大多数情况下,性能提升在1.5和3倍之间。

Ø 其实PHP 6是个失败的版本

PHP 6的开发开始于2005年,曾想要让PHP支持Unicode字符串。由于PHP 6的开发进展过于缓慢又出现了很多的问题,并且开发停滞不前,导致PHP 6在2010年被取消了。其实PHP 6很少有人用过,在没有新的版本出现之前,还一直在使用PHP 5。

Ø 寄希望于下一代的PHP NG分支

由于PHP 6的分支被占用了,不久后Zend的Dmitry Stogov发布了PHP的一个名为PHPNG(PHP Next-Gen)的分支。PHP NG(也可称为PHP 5.7)关键是仍保持对PHP 5.6的兼容性,在2014年1月中旬首次发布,并在同年5月初又再次进行里程碑式的更新,并对PHP速度的提升有着越来越多的思路。到了同年7月中旬,这些努力终于有了结果,测试表明开发中的版本性能对比PHP 5.6有着近乎1倍的提升。在渲染 WordPress 3.6前端页面上进行的测试,同样的页面,PHP 5.6渲染1000次耗时26.756秒,而PHP NG耗时14.810秒。此次性能提升的秘诀在于将近60%的CPU指令被替换成更高效的代码。PHP 5.6执行100次渲染需要9 413 106 833个CPU指令,而PHP NG 只需3 627 440 773 指令。

 

2.4.3  PHP的现在

现在是PHP 7的时代,2015年12月PHP 7.0版本的发布取得了重大突破,同时将带来大幅的性能改进和新的特性,以及改进一些过时的功能。该发布版本将会专注在性能加强,源自PHP版本树中的PHP NG分支。到本书发稿时,PHP 7有3个功能版本,分别是7.0.x,7.1.x,7.2.x,目前新开发的PHP项目都已经开始使用PHP 7这个版本。相对于之前的版本主要是性能上进行了提升,官方公布的数据性能可以提升一倍,PHP 7.1.x更多地是对7.0.x未完成的工作的一个补充,做的最大的改进就是增加了一个类型推断系统加一个类型相关的中间代码执行引擎。目前的最高版本是PHP 7.2.x,相对于 PHP 7.1.x版本主要优化是在 OPcache(通过将 PHP 脚本预编译的字节码存储到共享内存中,以此来提升 PHP 的性能,存储预编译字节码的好处就是省去了每次加载和解析 PHP 脚本的开销,在PHP 5.5以后的版本引入)。

 

2.4.4  PHP的未来

作为老牌的Web后端编程语言,PHP在全球市场的占有率非常高,仅次于Java,从各个招聘网站的数据上来看PHP 开发的职位非常多,薪资水平也非常不错。实际在中小企业、互联网创业公司,PHP的市场地位是高于Java的。Java在超大型企业、传统软件行业、金融领域的优势更大。目前来看,Node.js、Go、Python、Ruby 等语言还难以企及PHP和Java。在Web开发中PHP是王者,现在应用终端多方面发展,互联网用户爆发式增长,如今不否认PHP 在有些地方存在欠缺,比如微服务的构建、常驻内存的服务级系统、密集计算、大数据的生态构建等。

PHP语言入门简单,容易掌握,程序健壮性好,不容易出现像Java、C++等其他语言那样复杂的问题。PHP官方提供的标准库非常强大,各种功能函数都能在官方的标准库中找到,包括MySQL、Memcache、Redis、GD图形库、CURL、XML、JSON等,免除了开发者到处找库的烦恼。PHP的文档非常棒,每个函数都有详细的说明和使用示例。第三方类库和工具、代码、项目也很丰富。开发者可以快速、高效地使用PHP编写和开发各类软件。到目前为止,市面上仍然没有出现过比PHP更简单易用的编程语言。所以PHP的前景还是很广阔的,与其纠结于编程语言的选择,不如好好地深入学习使用PHP。

 

posted on 2019-08-16 08:35 老码农的一亩三分地 阅读(...) 评论(...) 编辑 收藏

导航