编译PHP-操作代码并执行操作码

时间:2011-08-19 08:23:26

标签: php

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

每次可以使用像APC这样的操作码缓存将操作码保存在共享内存中并重复使用时,跳过编译。

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

但是为什么?我想知道这个b / c这是一个非常明显的想法,所以我猜这是有原因的。

修改

核心问题是:

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

反对它的唯一“理由”就是你不能只在生活系统上修复一些东西......这无论是坏的坏习惯。

1 个答案:

答案 0 :(得分:2)

你有一个理由反对它。

另一个非常重要的一点是,如果将编译与运行时分开,无论是在每次运行的时间还是在运行的硬件方面,都会很快遇到复杂的依赖性问题 - 当你发生时会发生什么尝试在PHP 5.3运行时运行PHP 5.1生成的操作码?

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

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

在运行时之前编译操作码是否比缓存操作码有明显的好处?差异将是无法估量的。

当然,HipHop的存在理由是本地编译PHP代码runs faster而不是PHP,而操作代码缓存是以某些功能为代价的。但那是完全不同的。

您是否认为只在服务器上使用操作码可以提高安全性(通过默默无闻)?