我的一个朋友最近告诉我“要优化您的网站,您可能需要编译您的 php 文件”,我当时想“什么?”
老实说,我从来没有听说过,我是一个“高级天真的”程序员,这意味着我是自学成才,我建立了复杂的网站,但我仍然缺少一些东西......
底线:
编译php是什么意思?将它们转换为 exe 文件?为什么?是比较快的?
虽然每次调用都需要解释 PHP 代码,但字节码是几乎可以立即运行的预编译代码。大多数情况下,如果您正在运行一个更大的网站,您只会真正需要它。
以下工具可用于编译脚本或运行已编译的脚本:
除非您追求出色的性能,否则使用 Facebook 的 HipHop 之类的东西编译 PHP 可能有点过分。
我只需在您的机器上安装/配置备用 PHP 缓存 (APC),它将缓存已编译的字节码,并立即为您提供性能提升。
Facebook使用这样的东西。他们的产品是hiphop,而且是免费的。
编译器的想法是将人类可读的代码(C、PHP、Java 等)转换为机器可读的代码。当您执行 PHP 脚本时,它们会被解释(几乎是内联编译),这意味着它们会被逐行读取,并相应地执行代码。
已编译的代码,意味着它是在源代码中编译的,因此已经是机器语言(或 Java 等 VM 语言的字节码),因此服务器不必每次都解释代码。这使它更快。
Facebook 创建了一个 PHP 编译器来加速他们的网站。编译代码的想法是,通常,一旦编写完成,一段时间内就不会发生变化,因此每次执行代码时都必须将其解释为机器语言会产生开销。这就是为什么您的朋友所说的优化。
因此它将被转换为机器语言或字节码(不是 exe,但实际上是相同的概念)。
您的应用程序越大,这就越有意义。PHP 将你的整个程序加载到内存中,然后即时编译它:意思是它需要被使用。因此,如果您预编译它应该跳过该步骤。Facebook 就是这样做的。他们通过一种叫做 hip hop 的东西将他们的 php 翻译成 C++。不完全一样,但你明白了。
我怀疑这会在较小的应用程序上显示出很大的不同。