我知道PHP主要是一种解释语言。 PHP解释器(Windows中的php.exe和Linux中的php文件)是在每次执行脚本时执行解释还是仅在我更改源时执行解释?换句话说,PHP解释器是否缓存了解释脚本?
答案 0 :(得分:3)
是的,你有性能损失,因为PHP每次都会进行解释。但是,如果您安装并配置了APC(备用PHP缓存:http://php.net/apc),它将在内存中保留整个字节代码,并在发生某些更改时重新构建它。
答案 1 :(得分:2)
这实际上是每次请求到达时会发生的事情:
正如许多人已经指出的那样,将文件编译成操作码会有一些开销,而且默认情况下PHP没有缓存,因此它会执行"编译"每当请求到达时进程即使文件没有改变。
有一些可选的模块可以生成操作码缓存以避免这种开销,其中最常推荐的是APC,因为默认情况下它将在PHP 6上发布。
答案 2 :(得分:1)
是。
作为一种解释性语言,您确实会付出性能损失。 然而,在编制和使用它的方向上有一些研究。
大多数PHP加速器通过缓存PHP的编译字节码来工作 脚本,以避免解析和开销 在每个请求上编译源代码(一些甚至大多数可能 永远不会被执行)。为了进一步提高性能,缓存的代码是 存储在共享内存中并直接从那里执行,最小化 运行时缓慢的磁盘读取和内存复制量。