2017-03-03 73 views
1

模塊:定時CGI +快速CGI阿帕奇(AB):mod_fcgid比mod_cgi一樣慢4倍

LoadModule cgi_module modules/mod_cgi.so 
LoadModule fcgid_module modules/mod_fcgid.so 

測試文件夾進行常規和快速CGI。

DocumentRoot "/test" 

<Directory "/test/rc"> 
    Require all granted 
    Options +ExecCGI 
    SetHandler cgi-script 
</Directory> 


<Directory "/test/fc"> 
    Require all granted 
    Options +ExecCGI 
    SetHandler fcgid-script 
</Directory> 

C測試腳本:常規CGI +快速的CGI(命名爲:1.C)

常規CGI:

#include <stdio.h> 

int main(void) { 
    printf("Content-Type: text/plain;\n\n"); 
    printf("ttt\n\n"); 
    return 0; 
} 

FCGI(快速CGI)

#include <stdio.h> 
#include <fcgi_stdio.h> 

int main(void) { 
while (FCGI_Accept() >= 0) { 
    printf("Content-Type: text/plain;\n\n"); 
    printf("ttt\n\n"); 
    return 0; 
} 
} 

基準與常規cgi:(3.61秒

ab -n 10 -c 10 http://<ip>/rc/1 
Time taken for tests: 3.613 seconds 

基準具有快速CGI:(13.23秒

ab -n 10 -c 10 http://<ip>/fc/1 
Time taken for tests: 13.233 seconds 

回答

2

你應該叫FCGI_Finish()而不是return 0;,在退出之前,否則你的程序僅僅只供應一個請求。