PHP and compilation


PHP and compilation

我知道PHP是解释语言,虽然它是一个解释,它如何从整个项目中检测编译错误,如果它在没有生成目标代码的情况下进行编译,那么编译需要什么?只针对语法?

我相信PHP被编译成一个内部数据结构,而这个内部结构就是执行的内容。运行时在执行时没有逐行读取实际的程序源代码。因此,"编译"阶段意味着源代码正在转换为这种内部数据结构。届时,还会验证语法,语法错误将阻止页面执行。

通常,PHP必须对每个请求进行解析。这使得PHP运行速度有些慢。但是,您可以使用http://php.net/manual/en/book.apc.php缓存解析后的代码,避免每次都需要重新解析,从而大大加快了速度。

此外,还有各种PHP实现,它们确实将PHP源代码编译为字节码或本机代码。从我看到的性能信息来看,编译对速度没有太大影响,但它确实(在Facebook编译器的情况下)显著降低了RAM消耗。