Practical PHP Programming

解释VS编译

为了在程序性能和对程序员的灵活性上找到平衡,PHP将解释和编译混合起来。

在后台,当执行到的时候,PHP将你的脚本编译成一系列的指令(即操作码)。这些指令依次执行,直到脚本结束。这同传统意义上的编译型语言(如C++)不同。C++直接将代码编译成本地执行码,以后直接运行编译好的程序即可。而PHP在每次请求的时候都会重新编译你的脚本。

每次都要重新编译看起来浪费了处理器时间,但这样却有个好处:你在更改代码之后不用再次手动编译一遍了;另一方面,很多代码编译的时间比执行时间还要长。

此外,开发期间能够提供快速反馈。如果你的文件中存在错误,PHP在你改正这个问题之前不会完成编译,因此你可以通过一行行执行你的代码,直到找到问题所在。

由于有PHP加速器的使用,正常情况下编译时间完全可以被忽略。

运用解释性代码的一个主要优势是代码所使用的内存是PHP所控制的,每次脚本执行完毕之后,PHP都会自动清理内存。这也就意味着你无需担心关闭数据连接、释放分配给镜像的内存等等,PHP都会自动给你完成。但这并不意味着你什么都不用干,等着让PHP来给你清理——好的程序员都是自己完成清理的,在你万一忘记清理的情况下才使用PHP自动清理。