“你能”吗;编撰;PHP代码并上传一个二进制ish文件,该文件将由字节码解释器运行?
我知道PHP在服务器上运行之前被编译成字节码,然后字节码可以被缓存,这样整个脚本就不必在每次web访问时被重新解释“你能”吗;编撰;PHP代码并上传一个二进制ish文件,该文件将由字节码解释器运行?,php,bytecode,Php,Bytecode,我知道PHP在服务器上运行之前被编译成字节码,然后字节码可以被缓存,这样整个脚本就不必在每次web访问时被重新解释 但是你能“编译”PHP代码并上传一个二进制ish文件吗?这个文件将由字节码解释器运行。PHP并不像许多程序那样编译。您可以使用Zend的编码器使其无法读取。简短的回答是“否” PHP的当前实现是一种解释语言。您可以从理论上论证任何语言在技术上都可以被解释或编译,但目前的实现是这样的:PHP代码需要一个解释器来运行,解释器管理执行环境 要回答您关于上传预编译PHP字节码的问题,这可能
但是你能“编译”PHP代码并上传一个二进制ish文件吗?这个文件将由字节码解释器运行。PHP并不像许多程序那样编译。您可以使用Zend的编码器使其无法读取。简短的回答是“否” PHP的当前实现是一种解释语言。您可以从理论上论证任何语言在技术上都可以被解释或编译,但目前的实现是这样的:PHP代码需要一个解释器来运行,解释器管理执行环境
要回答您关于上传预编译PHP字节码的问题,这可能是可能的,但您必须实现一种方法,让PHP解释器读入这样的文件并使用它。由于现有的操作码缓存已经存在,这似乎不是一项可以获得很多回报的任务。在提出这个问题后,Facebook推出了HipHop for PHP,这可能是迄今为止测试最好的PHP编译器(因为它运行的是世界十大网站之一)。然而,Facebook为了支持HHVM而停止了它,HHVM是一个虚拟机,而不是一个编译器 除此之外,谷歌
PHP编译器
还提供了许多第三方解决方案
- 将PHP编译为.NET和.NET内核
- 可以编译成自包含的二进制文件
- 在Mac、Linux、Windows、Windows核心、ARM等平台上运行
- (下载)
- 编译到.NET(CIL)看起来从2017年7月开始停产,似乎不支持PHP7李>
- 编译为本机二进制文件
- 现在不太活跃(2014年2月)——最后一个版本在2011年,最后一次更改在2013年夏天
- ,
- PHP的免费开源编译器实现
- 编译为本机二进制文件(Windows、Linux)
- –网站关闭,停留在GitHub上,最后一次更改是从2012年初开始
- PHP的PECL扩展
- 实验性
- 编译为PHP字节码,但可以将其封装在加载PHP解释器的Windows二进制文件中(请参阅)
- 外观现已停产(2014年2月)–最后一次更改是在2011年
- ,
- 变革孵化器
- 由IBM支持
- 编译为Java字节码
- 现在看起来停产了(2014年2月)——网站关闭,看起来像是2008年和2009年的大肆宣传
- 编译为独立的Windows二进制文件
- 二进制文件包含字节码和启动器
- 外观现已停产(2014年2月)——最后一次更改是在2006年
- 编译成C++
- 外观现已停产(2014年2月)——最后一次更改是在2003年
eval
s、include
s和整个PHP标准库。自从第一次提出这个问题以来,这个答案已经从一个简单的“否”变为“某种程度的”
- ,
- 在专有PHP应用程序中对整个脚本进行编码
- 在专有PHP应用程序中对某些类和/或函数进行编码
- 使php gtk应用程序能够在客户端桌面上使用,而无需php.exe
- 对PHP到C转换器进行可行性研究
我们正在使用Phalanger--它甚至支持那些肮脏的PHP动态特性,并且仍然能够将它们编译为.NET汇编,可以作为独立的DLL分发。如果您只是想从PHP脚本生成二进制可执行文件,那么,请避免试图使你的问题非常精确,因为这会使你看起来确切地知道你需要什么。此外,大多数PHP开发人员对字节码是什么一无所知 话虽如此,答案是肯定的。我刚刚把一个PHP脚本编译成二进制文件。而不仅仅是任何二进制文件。我已经使用(链接到Wayback机器,现在已断开)将其转换为一个可移植的二进制文件,可以与所有依赖项一起分发并执行,而不会出现任何问题……而且它工作得很好
您所需要的只是使用。请参阅5.5.x和集成的OPcache模块,共享内存中的易失性、更高的性能以及php的动态性原理保持不变
在PHP7中,有一个PHPINI选项,用于将字节码保存在特定文件夹中。In对于“编译”并保存在特定文件夹中以优化重用的php cli脚本非常有用 Opcache它不是编译,而是类似的东西。如果