为什么PHP(脚本)比CGI(编译)提供更多请求?

时间:2012-06-10 22:31:06

标签: php performance request cgi benchmarking

我开发了以下CGI脚本并在Apache 2(http://localhost/test.chtml)上运行。我在PHP中做了相同的脚本(http://localhost/verifica.php)。后来我使用Apache Benchmark工具执行了Apache基准测试。结果显示在图像中。

包括

#include <stdlib.h>
int main(void)
{

    printf("%s%c%c\n",
    "Content-Type:text/html;charset=iso-8859-1",13,10);
    printf("<TITLE>Multiplication results</TITLE>\n");
    printf("<H3>Multiplication results</H3>\n");

    return 0;
}

enter image description here

有人可以解释为什么PHP提供比CGI脚本更多的请求?

2 个答案:

答案 0 :(得分:5)

调用独立的CGI程序会产生fork / exec - 必须完全加载新程序。这不是很有效。

Iniitially PHP以这种方式运行,但为了加快速度mod_php的开发,​​PHP解释器最终内置并运行在Apache服务器的进程空间内,所有它必须做的就是一些简单的事情解析。

答案 1 :(得分:2)

你在这里测量的唯一一件事就是几乎没有操作程序造成的开销。调用脚本或cgi产生的开销取决于Apache服务器的配置方式。您可能正在使用php作为模块,这意味着它实际上是在apache进程内运行的。对于CGI,您可能正在使用常规风格,即为每次调用创建一个过程。

根据您实际想要测试/知道/评估的内容,您应该多次重新运行此测试,例如在php与C cgi中进行大量计算,使用fastcgi等等。另外,不要忘记检查像APC这样的代码缓存对php代码执行的影响,在某些情况下差别很大。