5

谷歌搜索后,我发现了很多 HipHop 文档,但在 2011 年到 2013 年之间发布了很多。

今年早些时候推出了一个新版本的 HipHop,它甚至支持 Drupal 并包括很多改进......

我一直使用 Zend Guard 来部署我的商业应用程序,但现在我开始认真考虑在生产中使用 HipHop,但问题来了:

  • 我们可以只使用字节码 HHBC(没有 .php 源代码)运行应用程序吗?

遵循我的研究参考 https://github.com/facebook/hhvm/wiki/FAQ

这个问题可能看起来很明显,但是在项目文档中找到这个答案并不容易。

提前致谢!

4

1 回答 1

3

嗯,是的,也不是。

HHVM 有一种所谓的 RepoAuthoritative 模式,在这种模式下,HHVM 将不再检查 PHP 文件的存在或它们的最新程度;相反,它将直接从其缓存中检索 HHBC。

理论上,您可以按照以下步骤操作:

  • 为所有 PHP 文件预先生成 HHBC 并将该 HHBC 插入 HHVM 的缓存中。这就是所谓的预分析阶段(如果你曾经在 HHVM 文档中看到过,这就是他们的意思)
  • 打开 RepoAuthoritative 模式(它只是 HHVM 配置中的 1 行)
  • 删除你的 PHP 代码

这样,您的 PHP 应用程序将在没有源代码的情况下正常运行。重新启动服务器不会改变这一点,因为 HHVM 的字节码缓存存在于磁盘上(它被实现为 SQLite 数据库)。

但是,如果您:

  • 想要更改代码中的某些内容。您必须复制代码、进行更改并重复预分析阶段。
  • 想要将 HHVM 升级到更新的版本。HHVM 使用其构建 ID 作为缓存键的一部分,因此,如果您升级它,字节码缓存将变得无法访问,并且由于您将在 RepoAuthoritative 模式下运行,您的应用程序将减少为一堆 HTTP 404 错误。要解决此问题,您还必须重复预分析阶段。

底线:没有上涨空间,下跌空间很大。这样做是没有意义的。

PS:我希望我回答了你的问题。我也可能误解了您的要求;如果是这种情况,请在评论中告诉我。

于 2014-03-15T20:53:39.780 回答