通常,Zend引擎会在执行时将PHP编译为操作码。

要每次都跳过编译,可以使用APC之类的操作码缓存将操作码保存在共享内存中并重复使用。

好的,现在似乎还没有解决方案,只能将PHP编译为操作码并使用解决方案。类似于您使用Java的方式。

但是为什么呢? 我想知道这是一个很明显的想法,所以我想这是有原因的。

编辑:

核心问题是:

不会使PHP编译使操作码缓存变得多余吗?

唯一的“理由”是,您不能只在实时系统上修复某些问题……这是一种不好的坏习惯。

最佳答案

您已提出反对的理由。

另一个非常重要的问题是,如果您将编译与运行时分别按照发生的时间和运行的硬件分开,则很快会遇到复杂的依赖性问题-尝试运行时会发生什么情况在PHP 5.3运行时上由PHP 5.1生成的操作码?

这也使代码调试更加困难-因为调试器必须将操作码映射回源代码。

但是您似乎没有问过的一个非常重要的问题,更不用说回答了:预生成操作码的好处是什么?

在运行时之前编译操作码是否比缓存操作码有显着的优势?差异将非常小。

当然,HipHop的存在理由是, native 编译的PHP代码runs faster而不是带有操作码缓存的PHP,但以牺牲某些功能为代价。但这是完全不同的。

您是否认为仅在服务器上使用操作码可以提高安全性(由于晦涩)?

关于php - 将PHP编译为操作码并执行操作码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7118819/

10-10 03:06