php prepare使用方法 神秘的PHP项目终于揭开面纱,加速和优化PHP扩展

神秘的 PHP 项目终于揭晓。该项目由一个 PHP 到 C++ 的转换程序、一个重新实现的 PHP 运行时库和许多常用 PHP 扩展的重写版本组成。目的是加速和优化PHP。

用项目负责人赵海平的话来说,该项目影响巨大。它目前支持 % 的网络流量。由于服务器的CPU使用率平均降低了50%,因此对服务器的需求大大降低。为了让这项改进造福社区php prepare使用方法,他们决定将其开源,希望进一步帮助提高更多大型复杂 PHP 网站的可扩展性。

PHP和问题

众所周知,前端主要是用PHP编写的。赵海平表示,过去6年,PHP语言的进步让我受益匪浅。PHP非常简单,易学,易使用,易读,易调试,所以新工程师成长很快,有利于促进更快的创新。

PHP 是一种脚本语言。它的优点是编程效率高,可以支持快速的产品迭代。但是和传统的编译语言相比,脚本语言的CPU和内存使用效率并不好。随着Ajax技术的广泛采用,加上SNS的高动态要求,这些缺点更加突出。对于每月拥有超过4000亿PV的企业来说,如何实现扩张尤为具有挑战性。

常用的方法是直接用C++将PHP应用中比较复杂的部分改写为PHP扩展。事实上,PHP 被转化为一种连接前端 HTML 和 C++ 应用程序逻辑的胶水语言。从技术角度来看,这不是问题,但是随着技能要求的提高,可以从事整个应用程序的工程师数量大大减少。学习C++只是编写PHP扩展的第一步,下一步就是理解。由于工程团队很小,每个工程师要支持超过 100 万用户。有些代码不是团队中的每个人都理解的,这是不可接受的。

网站本身的可扩展性更具挑战性,因为几乎每个页面访问都是由具有个性化体验的登录用户发起的。浏览首页时,系统需要查看所有好友,好友最重要的状态更新,根据隐私设置过滤结果,然后显示评论、照片等动态。所有这一切都需要在一秒钟内完成。

自 2007 年以来,已经编写了几种不同的解决方案来解决这些问题。这包括用另一种语言重写,但由于开发的复杂性和速度,它没有实现。他们还重写了 PHP 的核心部分 Zend 引擎,提交给了 PHP 项目,但最终还是没有达到要求的性能。最终,他们选择了,最终得到了他们想要的。

有了这个,工程师就可以写代码,用PHP写出最终页面的逻辑,继续快速迭代。同时,后端服务采用C++、Java编写,提供新闻推送、搜索、聊天等核心功能。

发展历程

赵海平透露,这个项目最初来自几年前的一个公司活动(员工可以自由玩耍和试验新想法)。他手动将 PHP 转换为 C++ 代码。虽然语法类似,但无论是CPU还是内存使用都没有关系。,转换后的C++代码比PHP好很多。于是他想,如果建立一个系统,通过编程来实现转换,会发生什么?

在此之前,已经有很多方法可以提高 PHP 的性能。Zend 引擎在运行时将 PHP 源代码转换为在 Zend 虚拟机上运行。大多数 PHP 网站都使用开源项目 APC 和输出缓存。此外,还有一些商业产品通过优化和缓存来提高 PHP 的速度。赵海平选择了另一条路,直接把PHP转成C++,再转成本地机器码。当然,遵循同样思路的开源项目还有很多,编译成C,编译成Java,用phc编译成.NET。

接下来的8个月,赵海平拿出了原型,足以说明这条路可以走,而且编译出来的代码确实更快了。很快,并加入了。它又开发了 10 个月,并在生产服务器上测试了 6 个月。然后就正式部署了。6 个月后,超过 % 的网络流量被使用。

据赵海平介绍,借此,服务器上的CPU使用率平均降低了50%php prepare使用方法,从而大大降低了对服务器的需求。该项目影响巨大。为了让这项改进造福社区,他们决定将其开源,希望进一步帮助提高更多大型复杂 PHP 网站的可扩展性。

原理

将 PHP 代码转换为高度优化的 C++ 代码,然后使用 g++ 编译器进行编译。它可以保持执行源代码的语义等价性,但为了提高性能,它牺牲了一些很少使用的特性,例如 eval()。

转换过程分为三个步骤:

·静态分析。收集声明关系和依赖关系等信息。

·类型推导。选择最合适的类型,它是 C++ 标量吗?或数组,或。

· 代码生成。大多数 PHP 语句和表达式直接对应 C++ 语句和表达式。

在开发过程中,还有一个副产品:HPHPi,它是一个实验性的解释器。通过它,你无需编译PHP源代码就可以运行。它已经用于自己的调试。

在保持PHP优点的同时,也具有C++的性能优势。该项目共有 300,000 行代码和 5,000 多个单元测试。所有这些都将以 PHP 开源许可证的形式发布。

文章来源:https://hb.qq.com/a/20100205/000189.htm

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享