我知道PHP在服务器上运行之前被编译为字节代码,然后字节代码可以被缓存,这样整个脚本就不必在每次web访问时重新解释。
但是,您能否“编译”PHP代码并上传一个二进制文件,该文件将由字节码解释器运行?
我知道PHP在服务器上运行之前被编译为字节代码,然后字节代码可以被缓存,这样整个脚本就不必在每次web访问时重新解释。
但是,您能否“编译”PHP代码并上传一个二进制文件,该文件将由字节码解释器运行?
当前回答
PHP不像许多程序那样真正被编译。您可以使用Zend的编码器使其不可读。
其他回答
phc允许你将PHP程序编译成共享库,这些库可以上传到服务器。PHP程序被编译成二进制文件。它以支持求值、包含和整个PHP标准库的方式完成。
简短的回答是“不”。
PHP的当前实现是一种解释性语言。您可以从理论上论证任何语言在技术上都可以被解释或编译的事实,但就目前的情况而言,当前的实现是PHP代码需要一个解释器才能运行,解释器管理执行环境。
要回答关于上传预编译的PHP字节码的问题,这可能是可行的,但必须实现一种方法,让PHP解释器读取这样的文件并使用它。由于已有的操作码缓存已经存在,这似乎不是一个会获得太多回报的任务。
也有
PHP的(实验性的)编译器扩展,
它的目标是
在私有PHP应用程序中编码整个脚本 在私有PHP应用程序中编码一些类和/或函数 使php-gtk应用程序能够在客户端桌面上使用,而不需要php.exe。 做一个PHP到C转换器的可行性研究
扩展可从PECL。
在php 7中有php ini选项opcache。File_cache,用于将字节码保存到指定文件夹中。In可能对In php cli脚本有用,这些脚本被“编译”并保存在特定的文件夹中,以便优化重用。
Opcache,它不是编译,而是类似的东西。
自从这个问题第一次被问到,答案已经从直截了当的“不”变成了“有点”
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