我知道PHP在服务器上运行之前被编译成字节码,然后字节码可以被缓存,这样整个脚本就不必在每次访问web时都被重新解释.

但是,您能否"编译"PHP代码并上传一个只由字节码解释器运行的二进制文件呢?

推荐答案

在被问到这个问题后,Facebook推出了HipHop for PHP,这可能是迄今为止测试最好的PHP编译器(因为它运行着世界十大网站之一).然而,Facebook为了支持HHVM而放弃了它,HHVM是一个虚拟机,而不是一个编译器.

除此之外,谷歌PHP compiler还提供了许多第三方解决方案.

PeachPie

  • PeachPie GitHub
  • 将PHP编译为.网和.网芯
  • 可以编译成独立的二进制文件
  • 在Mac、Linux、Windows、Windows Core、ARM上运行.

Phalanger

  • GitHub(下载),Wikipedia
  • 编译成.NET(CIL)看起来从2017年7月开始停产,似乎不支持PHP7.

phc

  • 编译为本机二进制文件
  • 现在不太活跃(2014年2月)——最后一个版本在2011年,最后一次更改在2013年夏天

Roadsend PHP Compiler

bcompiler

  • PHP的PECL扩展
  • 实验的
  • 编译为PHP字节码,但可以将其包装在加载PHP解释器的Windows二进制文件中(请参见bcompiler_write_exe_footer() manual)
  • 现在看起来已停产(2014年2月)-最后一次更改是在2011年

Project Zero

  • Wikipedia, IBM
  • WebSphere sMash年的变革孵化器
  • 由IBM支持
  • 编译成Java字节码
  • 现在看起来已经停产(2014年2月)-网站关闭,看起来像是2008年和2009年的大炒作

Bambalam

  • 编译为独立的Windows二进制文件
  • 二进制文件包含字节码和启动器
  • 外观现已停产(2014年2月)——最后一次更改是在2006年

BinaryPHP

  • 编译到C++
  • 外观现已停产(2014年2月)——最后一次更改是在2003年

Php相关问答推荐

更新WooCommerce高性能订单存储(HPOS)的管理员自定义订单元数据

添加自定义Metabox到WooCommerce管理订单,启用HPOS

dockerized laravel服务器拒绝POST请求

显示WooCommerce当前产品类别或标签的短代码

在WooCommerce中禁用特定日期之前的免费送货

在WooCommerce产品中按类型对产品属性术语进行分类以供显示

通过DO LAMP进行身份验证并从邮箱发送邮箱的最简单方式是什么

将数组推送到数组时,数组推送()出现问题

如何不重新查询模型A-&>;相关模型B-&>模型

如何在laravel中使用script type= text/html/script

使用php ZipArhive类将Zip压缩文件分成多个部分

PHP Match如何准确判断条件?

如何从phpseclib和SFTP获取日志(log)记录?

调用未定义的方法 mysqli::execute_query()

使用 foreach php 将记录正确分配给正确的父级

Laravel路由中的符号在slug中会创建额外的斜杠

symfony/notifier + twig/inky-extra 在 dunglas/symfony-docker 中缺少 ext-xsl.

如何使用在产品快速编辑菜单前端的自定义框中 Select 的值更新 woocommerce 产品属性值?

PHP for each 函数打印 td

如何在字符串constant-string-NUMBER-*中获取 NUMBER?