PHP有像Java这样的虚拟机吗?

PHP有像Java这样的虚拟机吗?

是。

独立于PHP运行的平台,脚本被编译成相同的字节码并由Zend Engine运行。

与Java的不同之处在于,此编译代码通常不会存储在单独的文件中,并且每次执行时都会重新编译脚本(但请参阅操作码缓存)。

Zend Engine和典型JVM之间的另一个重要区别在于它们执行字节码的方式:

  • Zend引擎直接执行(解释)编译的字节码。 (至少这就是我认为发生的事情。我无法从Zend在线文档中确认这一点!)
  • JVM通常使用JIT编译器将字节码编译为本机指令,然后执行本机指令。

实际上,JVM行为比这更复杂。 JVM并不总是编译为本机代码,当它们这样做时,它们通常会延迟JIT编译,直到它们认为值得做。 在此之前,他们直接执行字节码。

是的,但直到最近它才非常像JVM for Java。 它是由facebook发明的,并在另一周(2013年7月)的OSCON大会上宣布。

可以在此处阅读有关新PHP VM的新闻报道,并且可以在github上找到代码和更多信息。