我开发了以下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;
}
有人可以解释为什么PHP提供比CGI脚本更多的请求?
答案 0 :(得分:5)
调用独立的CGI程序会产生fork
/ exec
- 必须完全加载新程序。这不是很有效。
Iniitially PHP以这种方式运行,但为了加快速度mod_php
的开发,PHP解释器最终内置并运行在Apache服务器的进程空间内,所有它必须做的就是一些简单的事情解析。
答案 1 :(得分:2)
你在这里测量的唯一一件事就是几乎没有操作程序造成的开销。调用脚本或cgi产生的开销取决于Apache服务器的配置方式。您可能正在使用php作为模块,这意味着它实际上是在apache进程内运行的。对于CGI,您可能正在使用常规风格,即为每次调用创建一个过程。
根据您实际想要测试/知道/评估的内容,您应该多次重新运行此测试,例如在php与C cgi中进行大量计算,使用fastcgi等等。另外,不要忘记检查像APC这样的代码缓存对php代码执行的影响,在某些情况下差别很大。