首页 > 编程 > Facebook神作: HipHop for PHP

Facebook神作: HipHop for PHP

2010年2月4日

PHP很容易开发,它的弱类型的变量和近乎万能的array,可以节约很多开发的时间,当然这也导致它的运行效率不高。有一些扩展例如APC 和 eAccelerator 致力于缓存PHP编译成的opcode来提高速度,不过facebook花了一年半的时间做了更彻底的事情,他们不想容忍连$a=1; $b=1; $c = $a + $b这样简单的事情都要去判断zval的类型,于是他们写出了HipHop for PHP——直接把PHP往C++上转换。

主创人员的blog文章:HipHop for PHP: Move Fast
一个关于HipHop for PHP的talk的视频:http://www.ustream.tv/recorded/4409735

PHP的语法大致被分为两类,一种是传统的,几乎可以和C++直接对应的语法,一种是所谓的”magic”语法。magic语法包括诸如:

$$$$$foo = 1;(动态变量)
$$$$foo();  (动态函数)
extract(array(‘a’ => 1, ‘b’ => 2));

从上面的视频可以看到,动态变量,动态函数乃至extract()都被支持了,不过他们没说是怎么实现的,好奇中。而且对于下面这种code,会是如何编译的呢,a到底要声明为一个int还是查表呢,或者莫非只要scope中有extract()的存在一切变量都要查表?

$a = 1;
$arr['a'] = “2″;
extract($arr);
$b = $a + 1;

另外还有明确说了不支持的,包括eval()的功能,还有is_function_exists()这样的运行时的判断,到是不太用得着。另外在视频中的Q&A环节,看意思是PHP的已有extension都要rewrite一下,感觉这个的代价是不是太大了?

还不知道啥时能用上这个技术,facebook说他们已经有90%的服务已经在用了,用了6个月部署。不清楚它的开源度如何,其它人能不能随便用。HTTP Server方面,facebook方面用了一个自已写的http server以及non-multithreading的apache 1.3,multithreading的暂时还不可用的样子,所以说短期内至少未名是不能用上这个技术的。

ps. 这个技术如果真的发达了,是不是广大C++民工身价会小跌呢。。。

编程

  1. 2010年2月5日12:58 | #1

    真了不得!loudly同志更新日志了!敲锣打鼓!
    我身为一个伪php技术人员没有看懂!汇报完毕!

  1. 目前还没有任何 trackbacks 和 pingbacks.