将 PHP 编译为独立可执行文件(更快?)

3
我有一个PHP脚本,希望将其编译为可独立运行的命令行可执行文件,供Linux使用。
这个想法可行吗?是否有可以完成这项工作的编译器?
我知道有PHP编译器存在,但我的问题更多地是关于它是否有优势以及使用哪个最好的编译器。
相对于通过PHP运行它,它会更快还是更慢?如果可以加快脚本的运行速度,那就太好了,因为它需要进行大量处理(循环和数学运算),需要一个小时才能运行完。
2个回答

6
我的理解是HipHop编译成的是C++而不是C,这个过程非常简单。Facebook已经将它应用于大量的代码。
我不确定是否会得到一个.exe文件,但OP只想要更快的速度。他可能会得到相当不错的加速;HipHop编译后的代码平均只比原来快了约2倍左右,但这是因为PHP执行中很多都是库调用。如果HipHop编译器能够找出计算代码中的数据类型,他的计算部分可能会得到相当不错的加速。他可能需要修改一些代码,以使HipHop编译器清楚地知道计算变量仅用于计算,但这只是一个小的源代码更改。我期望HipHop网站会包含有关如何加速HipHop编译代码的提示。
所有这些都是基于我的理解和没有实际经验的猜测。你的情况可能会有所不同。

是的,我写的 PHP 代码非常干净,除了在未设置变量上进行计算 - 但这可以修复。 - Alasdair
不好意思,这超出了我的经验范围。如果HipHop确实生成C++数组,我认为你最好确保所有的插槽都填充了数字值。这不会影响你的普通PHP代码。然而,我只是一个坐在椅子上的专家,但我有非常好的编译器背景,所以我的猜测可以说是有根据的。现在你需要做我没有做的阅读 :-} - Ira Baxter
1
我想回报一下,我花了三天时间才安装好Hiphop,但是一旦它开始工作,我的脚本运行时间减少了一半,内存使用率也降低了25%。非常印象深刻!就像魔法一样! - Alasdair
这个“过程相当容易”的说法有些夸张,不是吗? :-} 你看过生成的C++代码了吗?它的效率是否合理?这可能会为您提供一些线索,以便您弯曲PHP代码,使HipHop更容易帮助您。我本来期望在计算方面获得更好的性能。 - Ira Baxter
@N.B.: “已经是最优PHP代码”?这到底是什么意思?好的编译器可以做一些程序员难以在目标架构上“高效”编码的事情。我对Alastair的评论感到惊讶,他只得到了计算密集型代码的25%;现代CPU可以以真正惊人的速度进行算术运算,因此我得出结论,HipHop在某种程度上并没有做得很好,只是比本机PHP更好而已。你告诉我PHP对于数组使用了可怕的数据结构,这可能是问题所在。(Judy?那是HP优化到极致的软件包?它被整合到PHP中了吗?) - Ira Baxter
显示剩余4条评论

0

编译本身对于运行几小时的脚本贡献甚微。
最好的解决方案是使用另一种语言,C语言似乎是最佳选择。

您可以尝试使用HipHop编译器将PHP转换为C,但我不认为这是一项容易的任务。


他如何在PHP应用程序中使用C语言?我不明白你的意思。 - johnny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接