我知道PHP在服务器上运行之前被编译为字节代码,然后字节代码可以被缓存,这样整个脚本就不必在每次web访问时重新解释。
但是,您能否“编译”PHP代码并上传一个二进制文件,该文件将由字节码解释器运行?
我知道PHP在服务器上运行之前被编译为字节代码,然后字节代码可以被缓存,这样整个脚本就不必在每次web访问时重新解释。
但是,您能否“编译”PHP代码并上传一个二进制文件,该文件将由字节码解释器运行?
当前回答
自从这个问题第一次被问到,答案已经从直截了当的“不”变成了“有点”
http://github.com/facebook/hiphop-php/wiki
Hip Hop for PHP是一个编译器,它将PHP代码转换为高度优化的c++ 显然,某些函数不受支持(例如' explosion ')
我在寻找更多关于如何实现HipHop的信息时发现了这个问题,我想我应该说出来:)
然而,自2013年以来,Facebook不再使用它,它已经停止使用,转而使用HHVM,这不是一个编译器:https://en.wikipedia.org/wiki/HipHop_for_PHP
其他回答
还有bcgen (bcompiler的一个PHP7端口):
https://github.com/vjardin/bcgen/
(仅PHP7.2)
在回答了这个问题之后,Facebook为PHP推出了HipHop,这可能是迄今为止测试最好的PHP编译器(因为它运行的是世界上最大的10个网站之一)。然而,Facebook为了支持HHVM而停止了它,HHVM是一个虚拟机,而不是编译器。
除此之外,谷歌PHP编译器会出现许多第三方解决方案。
PeachPie
PeachPie GitHub 编译PHP到。net和。net核心 可以编译成自包含二进制文件 运行在Mac, Linux, Windows, Windows核心,ARM,…
袋貂
GitHub(下载),Wikipedia 编译到。net (CIL)从2017年7月开始停产,似乎不支持PHP 7。
phc
编译为本地二进制文件 现在不是很活跃(2014年2月)-上一个版本在2011年,最后一次更改在2013年夏天
Roadsend PHP编译器
GitHub的一个重写 免费的,开源的PHP编译器实现 编译为本地二进制文件(Windows, Linux) 自2010年停用,直到贡献者发现-网站关闭,留在GitHub上,上一次更改是在2012年初
b编译器
PHP的PECL扩展 实验 编译为PHP字节码,但可以将其包装为加载PHP解释器的Windows二进制文件(参见bcompiler_write_exe_footer()手册) 现在已经停产了(2014年2月)——2011年最后一次更换
Project Zero
维基百科,IBM WebSphere sMash的变化孵化器 IBM支持 编译成Java字节码 现在看起来已经停止了(2014年2月)-网站关闭,看起来像2008年和2009年的大炒作
Bambalam
编译成独立的Windows二进制文件 二进制文件包含字节码和启动器 现在已经停产了(2014年2月)——2006年最后一次更换
二进制PHP
编译为c++ 现在看来已经停产了(2014年2月)——上一次更换是在2003年
见5.5。使用集成的OPcache模块,在共享内存中的易失性,更好的性能和php的动态原则保持不变。
http://www.php.net/manual/en/opcache.installation.php
phc允许你将PHP程序编译成共享库,这些库可以上传到服务器。PHP程序被编译成二进制文件。它以支持求值、包含和整个PHP标准库的方式完成。
有人听说过Zend Guard吗,它的功能正是这个人想要的。它将PHP代码编码/混淆为“机器代码”。