`
k_lb
  • 浏览: 842876 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

HipHop 学习研究

 
阅读更多
HipHop 将PHP代码转换为高度优化的C++代码,然后再用g++编译器编译。

HipHop生成的代码尽可能地使用函数和变量的静态绑定。
转换过程分三步:
1. 静态分析。收集声明关系和依赖关系等信息。
2. 类型推演。选择最合适的类型,是C++的标量?还是String, Array, classes, Object或者Variant。
3. 代码生成。大部分直接将PHP语句和表达式对应为C++的语句和表达式。

hiphop编译完成只是hiphop的开始 -> hiphop自带了hphpi服务器

HPHPi,是一个实验性的解释器。通过它,不编译PHP源代码也可以运行。它已经用于HipHop自身的调试中。

注:nginx并不是必须的,如果需要的话也是拿来做前端代理,带入一些用户需要的web服务器附加功能。

安装好环境后

编译前配置:

setenv HPHP_HOME /usr/local/src/freebsd-hiphop-php
setenv HPHP_LIB /usr/local/src/freebsd-hiphop-php/bin
setenv CMAKE_PREFIX_PATH /services/hipop-php-include
setenv CC /usr/local/bin/gcc44
setenv CXX /usr/local/bin/g++44


编译 1 单个文件
1. /usr/local/src/freebsd-hiphop-php/src/hphp/hphp test.php --keep-tempdir=1 --log=3
2. /tmp/hphp_p6vSsP/program -m server -p 8080
3. curl http://localhost:8080/test.php


编译 2 多个文件
1. find . -name "*.*" > files.list
2. /usr/local/src/freebsd-hiphop-php/src/hphp/hphp --input-list=files.list -k 1 --log=3 --include-path="." --output-dir=/tmp/test --force=1 --cluster-count=50 -v "AllDynamic=true" -v "AllVolatile=true"
3. /tmp/hphp_DwhCB8/program -m server -v "Server.SourceRoot=/tmp/hphp_DwhCB8" -v "Server.DefaultDocument=index.php" -c /usr/local/src/freebsd-hiphop-php/bin/mime.hdf -p 8080


用hphpi编译实例
1. /usr/local/src/freebsd-hiphop-php/src/hphpi/hphpi -f curlTest.php
2.sudo /usr/local/src/freebsd-hiphop-php/src/hphpi/hphpi -m server -p 8088


hphp编译后的program是一个完整的站点,能自己监听端口,无需apache,nginx等web服务器

注:
1. 编译常用选项 hphp/hphp
--input-list=files.list //多个文件用(单个文件直接写文件名字)
--keep-tempdir=1 //[简写:-k 1]
--log=3 //指明编译的log等级 ,一般启用3,有用的信息都打出来
--force=1 //即便遇到warning和error都强制编译代码 ,错误和警报会在报告中体现出来
--gen-stats=1 //是否需要生成代码状态和代码错误报告
--include-path="." //include包含语句中出现的代码文件目录
--cluster-count=50 //如果不配这个参数的话,有几个php文件就会生成几个cpp文件,导致编译过程变长。所以如果基数过大的话,可以启用这个参数
--output-dir=/tmp //编译完成文件存放目录,默认在/tmp下
--program=projectname //
-v "AllDynamic=true" //支持动态的函数调用和动态方法调用
-v "AllVolatile=true" //可以支持动态函数和类的声明

2. 运行 参数如下
./program
Options:
--help display this message
-m [ --mode ] arg (=run) run | server | daemon | replay | translate
-c [ --config ] arg load specified config file
-v [ --config-value ] arg individual configuration string in a format
of name=value, where name can be any valid
configuration for a config file
-p [ --port ] arg (=-1) start an HTTP server at specified port
--admin-port arg (=-1) start admin listerner at specified port
-u [ --user ] arg run server under this user account
-f [ --file ] arg executing specified file
--count arg (=1) how many times to repeat execution
--no-safe-access-check arg (=0) whether to ignore safe file access check
--arg arg arguments
--extra-header arg extra-header to add to log lines
--build-id arg unique identifier of compiled server code
--xhprof-flags arg (=0) Set XHProf flags


官方:
https://github.com/facebook/hiphop-php
https://github.com/facebook/hiphop-php/wiki/using-nginx-as-front-server-to-hiphop
运行hiphop
https://github.com/facebook/hiphop-php/wiki/running-hiphop
运行时选项
https://github.com/facebook/hiphop-php/wiki/Runtime-options

其他参考
http://xenojoshua.com/tag/hiphop-php/
http://huichen.org/en/2010/07/hiphop-for-freebsd/
http://blog.csdn.net/cyberexp2008/article/details/6756826
分享到:
评论

相关推荐

    Hiphop-API:用于实时应用程序的 Hiphop API

    通过下载并分析Hiphop-API-master这个压缩包,我们可以深入研究其内部结构,包括源代码文件、文档、示例和测试等,以全面了解Hiphop API的功能和用法。此外,社区的支持和讨论也是学习和解决问题的重要资源,可以...

    facebook用c语言写的核心源码

    通过研究这些核心源码,开发者不仅可以了解Facebook如何利用C语言优化大规模的Web应用,还可以学习到高级的系统编程技巧和最佳实践,这对于任何希望提升自身C语言编程能力或理解大规模系统构建的人都是一份宝贵的...

    “互联网 ”微课在街舞体育课程中的研究.pdf

    罗艳萍的研究聚焦于嘻哈舞(Hiphop),这是因为嘻哈舞是街舞中相对普遍且适合各年龄层学习的舞种,因此在街舞体育课程中具有一定的代表性。 研究方法涵盖了文献资料法、问卷调查法、实验法、数理统计法和逻辑分析法...

    hip-hop-advice:饶舌歌手为用户提供智慧的荒谬视差网站

    《饶舌歌手的嘻哈智慧:hip-hop-advice网站开发详解》 在互联网的世界里,创新与个性一直是吸引用户的关键。...通过深入研究hip-hop-advice的源代码,开发者可以进一步提升自己的技能,将创新思维融入到自己的作品中。

    echonest.rar

    `fma-rock-vs-hiphop.csv` 文件很可能包含了Free Music Archive (FMA) 数据集的一部分,这是一个广泛使用的公开音乐数据集,用于研究和教育目的。在这个特定的CSV文件中,数据可能涉及摇滚和嘻哈音乐的歌曲样本,...

    PHP经典博文50篇

    - 对于高性能网站的构建,文章中提到了HipHop虚拟机的使用,HipHop通过编译PHP代码为机器码来提高执行效率。 - PHP-FPM作为PHP的一个运行环境,其工作状态的监控可以使用Cacti这样的工具进行。 7. **PHP安全性和...

    基于PHP的Compxler PHP版.zip

    关于PHP编译器的开发,一些知名的项目包括Facebook的HipHop VM(HHVM),它是一个Just-In-Time(JIT)编译器,可以将PHP代码转化为高性能的机器码。另一个是Zend Engine,它是PHP解释器的核心,负责解析和执行PHP...

    时尚DJ舞曲小偷 v3.1-ASP源码.zip

    5. **分类与推荐**:对舞曲进行分类(如电子、house、hip hop等),并根据用户行为和流行度进行推荐。 6. **评论与评分**:用户可以对舞曲进行评价,促进社区互动。 7. **安全性**:考虑到版权问题,源码可能包含...

    PHP最新版手册 v5.6

    - 引入了HHVM(HipHop Virtual Machine)的字节码格式,提高了代码执行速度。 - 增加了Array_column函数,允许从多维数组中快速提取某一列的数据。 - 新增了__invoke魔术方法,使得对象可以直接像函数一样被调用...

    Algorithm-hackfastalgos.zip

    "hack"是一种专为Facebook的 HHVM(HipHop Virtual Machine)设计的编程语言,它融合了静态类型系统和动态语言的灵活性,旨在提高开发效率并优化运行时性能。在 "hackfastalgos" 库中,我们可能会发现各种算法实现,...

    PHP5.4操作文档说明

    9. **HHVM兼容性**:虽然HHVM(HipHop Virtual Machine)是Facebook开发的PHP解释器,但PHP5.4的许多特性是为了与HHVM更好地兼容,提高了跨平台的代码执行效率。 10. **弃用的特性**:PHP5.4也移除了一些旧的和不...

    学生会社团部述职报告5篇.docx

    - **其他小型社团:** 如热点研究社、HIPHOP社及戏剧工作坊等,通过有效的宣传手段获得了更多关注,从而促进了社团的成长和发展。 #### 总结与启示 - **社团部的重要性:** 社团部在促进学生社团健康发展方面扮演着...

    ACV 28 AUDITION LATINO AYODANCE CHINA ETC.rar

    2. AYODANCE:AYODANCE是源于韩国的一种街舞风格,融合了多种舞蹈元素,如Hip-Hop、Locking、Popping等。AYODANCE以其活力四溢、快速的步伐和创新的动作吸引了大量年轻人。在选拔中,舞者可能需要展示AYODANCE的独特...

    Vulnerability-Charts:一些简单的图表,用于按版本列出各种软件包的CVSS

    HHVM(HipHop Virtual Machine)是Facebook开发的一个PHP运行时环境,它可能会被用于提升网站性能。 该项目的实现可能依赖于一些图表库,如D3.js、Chart.js或Highcharts等,这些库可以方便地创建交互式和动态的图表...

    hpa:Krona HPA - 是 HACK(HHVM) 的 ORM,其构建简单而高效

    HHVM(HipHop Virtual Machine)是由Facebook开发的一款高性能的PHP和Hack语言的虚拟机。HHVM采用Just-In-Time(JIT)编译技术,将PHP源代码转换为字节码,然后进一步优化为机器码,从而提高了执行效率。Hack是HHVM...

    lofi-player:browser浏览器中的虚拟房间,可让您玩Lo-Fi VIBE并放松身心

    体验来自机器学习模型。对于许多人来说,在没有指导说明的情况下在房间里闲逛会更有趣,因此您可以在进一步阅读(或在上)之前。只需单击上面的图片,Lo-Fi Player就会在不同的浏览器选项卡中启动。一个提示:音乐...

    带你了解PHP7 性能翻倍的关键

    PHP7的开发受到了HHVM(HipHop Virtual Machine)的启发,HHVM是由Facebook开发的PHP优化虚拟机,它利用JIT(Just-In-Time)编译技术提升了执行性能。然而,HHVM的设计是为特定场景优化的,无法满足所有开发者的需求...

    subclass-dance-party

    console.log(`${this.name} is doing hip-hop moves.`); } } ``` 在这个例子中,`HipHopDancer`通过`extends Dancer`继承了`Dancer`的所有属性和方法,并用自己的`dance`方法覆盖了父类的版本。 在项目"subclass...

Global site tag (gtag.js) - Google Analytics