究竟是什么令微软为Windows改进PHP
创始人
2024-06-06 13:00:32
0

微软正在努力改进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正则表达式的几则使用技巧

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
着眼MAC地址,解救无法享受D... 在安装了DHCP服务器的局域网环境中,每一台工作站在上网之前,都要先从DHCP服务器那里享受到地址动...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...