原文链接:http://coderoncode.com/2013/07/24/introduction-hhvm.html
“HHVM(HIpHop Virtual Machina)把PHP代码转换成高层次的字节码(普遍认为是一种中间语言)。然后这样的字节码在运行时被JIT(just-in-time)编译器动 态地转换成x64机器码。基于这样的考虑,HHVM和包括C#/CLR和Java/JVM在内的其他语言中的虚拟机类似。”
有点长的历史
在2008年早期Facebook网站便工作在HipHop(一个PHP执行引擎,现在是HPHP)上。其原始的动机便是把Facebook网站中 大量的PHP代码转换成C++代码,以便节约资源和提升应用性能。其原始版本便是HPHPc(一个把PHP代码转换成C++代码的编译器)。
在接下来的两年时间里Facebook网站继续工作在HipHop上,这时候的HipHop增加了HPHPi(一个HPHP的”开发模式”版本)和 HPHPd(HipHop debugger)。运行在HipHop平台上的PHP应用程序允许开发者查看和单步执行代码并且可以交互式地调试。
在巅峰时期,运行在HipHop上的PHP代码在性能上是运行在ZEND引擎上的PHP代码的6倍。然而,在HipHop的第一次迭代版上仍然有几个缺点:
1、HPHPc不是完全的支持PHP语言,最明显的便是不支持create_function和eval这两个函数。诚然,我并不认为对于不支持eval这个函数是件坏事。
2、Facebook的开发者必须维护两个不同的引擎(HPHPc和HPHPi),这样的结果便是导致重复的工作和浪费资源。
3、最后,HPHPc需要完全不同的部署过程,这样会妨碍到它被PHP开发者所采纳。
鉴于这些问题,Facebook公司在2010年早期采取了两个关键行动。其一便是把HipHop平台开源了,开源这样的一个项目是一个伟大的方 式,便于构建一个围绕着这个项目的社区并且可以从社区中获取到来自外界的帮助。其二,Facebook公司开始了HipHop在现代版本上的发展,这便是 HHVM(HipHop virtual Machine)。HHVM提升了HPHPc的健壮性并且修正了许多关键性的问题。
HHVM建立在HPHPc的顶端,其工作方式便是把PHP代码转换成高层次的字节码(一种中间语言)。这样的字节码在运行时被JIT(Just-In-Time)编译器动态地转换成机器码。
如果你像我一样,你可能对字节码、机器码和Just-In-Time编译器还有着模糊的记忆。所以,让我们暂时偏离一下主题快速地回顾下这些概念,然后讲解下他们是如何在HHVM中扮演关键性的角色。
字节码、机器码以及JIT,哦,我的…!
字节码:它是一个人们读不懂的代码,被设计来让解释器或者编译器高效执行的。当HHVM第一次导入我们的项目,它把所有的PHP代码转换成字节码这样的中间形式。产生的字节码和特定类型的计算机结构无关,因此可以很方便地在不同的系统间移植。
机器码:它是一组被设计成可以由CPU直接执行的指令。如果你曾经玩过Assembly(谁没玩过呢?),你一定能很好的理解什么是机器码。对于没有兴趣玩assembly或者类似语言的极少数的你们来说,机器码是由编译器或者解释器产生的并且可以直接被CPU执行的代码。
JIT(Just In Time)编译器:Just in time编译技术是用来提升软件性能的一项技术。它的实现原理便是在执行期间编译存储在内存中字节码,JIT编译器导入这些字节码并且编译成所需要的部分。
通过应用这些技术所获得的性能和速度便能给HipHop及随后的HHVM提供核心优势。保持一个PHP代码库,同时实现性能上堪比编译过的应用程序。
目前的HHVM基本上支持整个的PHP5.4版本,然而HHVM仍然有妨碍到一些应用程序执行的许多bugs。基于这样的原因,Facebook公 司设置的目标便是能让开源的顶尖的前20个PHP应用程序运行在HHVM上。第一个运行在其上的最流行的应用便是Wordpress。
接下来
现在我们对于HHVM究竟是做什么的及其优势有了很好的了解,并且对于运行在其上的应用程序我们可以很方便的开始测试了。在接下来的文章里,我会介 绍到如何在虚拟机上安装HHVM,以及在你的应用程序上运行基准测试,最后(双手合十),介绍如何在HHVM上运行Magento。
更多文章请关注我的个人博客:http://www.nomoneynowife.com

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

在PHP中使用预处理语句和PDO可以有效防范SQL注入攻击。1)使用PDO连接数据库并设置错误模式。2)通过prepare方法创建预处理语句,使用占位符和execute方法传递数据。3)处理查询结果并确保代码的安全性和性能。

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP可以轻松创建互动网页内容。1)通过嵌入HTML动态生成内容,根据用户输入或数据库数据实时展示。2)处理表单提交并生成动态输出,确保使用htmlspecialchars防XSS。3)结合MySQL创建用户注册系统,使用password_hash和预处理语句增强安全性。掌握这些技巧将提升Web开发效率。

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Dreamweaver CS6
视觉化网页开发工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。