究竟是什么令微软为Windows改进PHP

开发 后端
这里将揭秘究竟是什么令微软为Windows改进PHP,最近的一个现象是,微软正在努力让PHP可以更好的运行在Windows上。

微软正在努力改进PHP在Windows上的运行速度,看来微软对开源社区日渐支持。从另一方面看,51CTO从***一期编程语言排行榜上看到,PHP份额在逐步上升

微软开源社区主管Garrett Serack最近接受了媒体采访,谈论了微软为实现这一目标所做的努力。

  在Windows部署PHP应用性能欠佳

  数年以来,PHP开发者或许可能会选择在Windows上进行开发工作,但却很少有人选择将PHP程序部署在Windows上。Serack表示,出现这个结果不是没有道理的。他表示,“当用户在Windows上高兴的运行一个PHP应用时,IIS可能会突然崩溃,而且没人知道其原因何在。现有PHP驱动器基于老协议,性能不高。而原因在于PHP社区缺少完善它所必需的信息。”

  Serack认为,自从微软开发者了解到使用PHP语言可以开发第三方应用,微软就面临着一个新问题。微软逐渐开始意识到,开发者之所以不在Windows上部署PHP,原因是他们无法使用,并且微软内部的一部分人开始准备做出改变。自此之后,Serack的大部分时间都花在这个工作上。

  微软改善Windows对PHP的支持

  首先鼓励微软改善Windows对PHP支持的是SQL Server团队,它希望让现有开源应用可以更好的使用SQL Server驱动。也就是说,他们希望开发者在Windows上部署PHP应用时,使用SQL Server而不是MySQL,或者说至少是为了减少人们对自己的批评。2007年10月,***新改进版的Windows PHP驱动发布。但却并未被开源社区所接受,于是SQL Server团队又再次对其进行修改,以实现人们真正想要的功能。

  PHP运行在Windows Server 2008下
图 PHP运行在Windows Server 2008下:性能提高130%

  非常自然,该团队希望把修改后的代码反馈给开源社区。据Serack表示,这意味着需要和微软法律团队进行多次沟通,才能获准共享该代码。这个法律过程花费了数月时间,因为对微软来说,开源代码依然是一件比较新鲜的事情。但并非微软自己才面临这种挑战,正如Serack所指出的那样,“每一个向开源社区共享代码的大公司都要经过类似的法律审批过程。”

  不管怎样,在去年的OSCON大会上,微软向Adobe和其它项目提交了代码。Serack表示,“大约去年这个时候,微软开源软件实验室工作人员希望加速PHP在Windows上的开发。”当时Pierre Joye有空闲时间,因此微软让他与Serack共同实现以下目标:在Windows上完善PHP。

  同时,Serack开始完善Windows PHP生成过程,重新为其编写脚本。由于涉及到如此多其它项目,他不得不创建工具后又重建更多工具。他表示,“我希望包含所有DLL。”他创建了一个跟踪工具,来跟踪正在被创建的内容,并创建了全新的Visual Studio项目文件。Serack欣慰的表示,“再也不需要make文件和定制批处理脚本了。”

仅仅通过上述改进,核心解释器基准测试的速度与PHP在Linux上运行速度的差距就缩小到1%以内。接下来,Serack创建了一个二进制工具,并通过它运行真实数据(也就是真正的PHP脚本),提供规范的数据给编译器。配置文件导引优化(Profile-Guided Optimization,PGO)是Visual Studio最酷功能之一,这一点已经被.NET开发者朋友所证实。这使其核心解释器的速度快了18%左右,而且未修改一行代码,只是修改了生成过程。

  完善生成过程并不是一件没有意义的任务。让每一个模块使用相同且正确的设置被编译需要花点时间。Serack表示,“如果一个库使用不同的优化,它就不正常了。”

  他表示,Joye还更换了一些老的程序库。举例来说,POSIX正则表达式函数库已经有大约10年历史。Serack表示,创建新版依赖库对性能有较大影响,但同时对可靠性也具有较大影响。

  现在并非说该任务已经完全完成。所谓开源项目,或开发项目,就如同写长篇小说一样,编程永远不会完成,只有被放弃。Serack表示,“我们还正在进行一些努力。”举例来说,与Linux相比,Windows的文件系统实现有不同之处。而且他承认,“在现实世界应用中,在性能方面我们还难言成功。但是至少我们已经拥有了这个真正稳定的平台。”

  有人或许认为:“微软?开源?承诺?你一定是在开玩笑。”Serack本人最初也不轻信这种态度。实际上,微软在进行Windows上的PHP改进时,故意保持非常低调的态度。Serack表示,“我们不想得罪别人,我们的目标是让PHP很好的运行在Windows上。我们希望对PHP作出共享,而不是分裂它。那是我们连想也不会想的事情。我们通过共享代码来参与到社区中,而非控制社区。”

  Serack的目标就是简单的让PHP更好的运行在Windows上。他对开发者的反响感到激动,“太棒了!我已经拥有一个Windows服务器。现在我不用再买一台来运行我的PHP应用了。”

  Serack十分欢迎来自PHP社区的帮助和建议;他希望人们能够发表自己的观点,谈谈如何在Windows上更好运行PHP,尤其是欢迎开发者提出能够帮助跟踪问题和优化的意见。他表示,“如果有错,让我们一起修改。”

  Serack表示,“我们已经让人们做出选择,现在他们可以在Windows上部署PHP,并能够正常运行它们。”

【编辑推荐】

  1. 51CTO Web开发专区
  2. 专题:PHP开发基础入门
  3. PHP 5.3.0发布 新增命名空间等多项特性
  4. PHP命名空间规则解析及高级功能
  5. PHP正则表达式的几则使用技巧
责任编辑:彭凡 来源: IT168
相关推荐

2011-02-16 16:13:40

Debian

2014-07-28 08:28:38

Windows

2014-08-07 10:32:02

Windows微软

2015-09-29 09:47:14

2019-05-27 15:30:44

Node.jsJavaScript前端

2018-09-10 13:47:21

数据科学统计学决策

2013-06-05 14:45:40

Windows 8.1

2015-08-26 09:54:19

物联网

2009-07-30 14:43:30

认识BSM

2012-05-28 22:49:50

PureView

2022-06-13 09:51:35

UWB超宽带无线载波通信技术

2011-08-04 13:24:28

IT运维

2017-05-10 09:10:46

2020-12-17 17:33:47

MLOps大数据数据

2020-07-08 08:09:08

边缘计算边缘云云平台

2021-03-08 21:44:33

以太坊区块链比特币

2014-06-27 09:35:16

机器学习

2021-08-09 05:19:08

Provider 前端前端代码

2022-02-07 15:20:53

去中心化加密经济学加密货币

2012-09-17 09:52:20

云计算云存储公有云
点赞
收藏

51CTO技术栈公众号