用C語言開發(fā)FastCGI應用程序
I/O函數(shù)包
FastCGI軟件開發(fā)套件,開源的WebServer 2.0服務器包含I/O函數(shù)包用與簡化把已存在的CGI程序轉(zhuǎn)成FastCGI程序或者編寫FastCGI程序,在開發(fā)套件中有兩個函數(shù)包:fcgi_stdio 和 fcgiapp,在你的程序中必須包含這些包中的一個:
fcgi_stdio.h
fcgiapp.h
fcgi_stdio包,是fcgiapp包的頂層包,在轉(zhuǎn)化CGI程序或者是寫新的FastCGI程序是,我們強烈推薦你用它,fcgi_stdio包有以下幾個優(yōu)點:
簡單:只要有三個性的API需要學。
易懂:如果你正包CGI程序轉(zhuǎn)化為FastCGI程序,你會發(fā)現(xiàn)CGI程序與FastCGI程序之間只有很少的區(qū)別。在我們設計函數(shù)庫的時候我們盡可能的 把FastCGI應用程序變得容易理解,以至于我們在建立新FastCGI程序的時候我們使用相同的環(huán)境變量,相同的解析查詢字符串的技術(shù),以及相同的 I/O程序等。
方便:這個庫函數(shù)提供了CGI和FastCGI二進制的文件的完美兼容。因此不管是CGI還是FastCGI,都同樣運行。
代碼結(jié)構(gòu)
FastCGI的代碼構(gòu)成,把你的代碼分成兩個獨立部分:
1.初始化部分:只執(zhí)行一次
2.應答循環(huán)部分:FastCGI腳本每被調(diào)用一次,這部分九被執(zhí)行一次
一個應答循環(huán)的典型格式如下:
while (FCGI_Accept() >= 0) {//循環(huán)條件
# 應答循環(huán)體
}
知道一個客戶端請求來的時候FCGI_Accept塊才執(zhí)行,并返回0。如果有一個系統(tǒng)故障,或是系統(tǒng)管理員終止進程,Accept將返回-1。
如果應用程序作為一個CGI程序被調(diào)用,那么第一次調(diào)用Accept時,返回0,第二次總是返回-1,產(chǎn)生CGI行為。(請詳見20頁的"FCGI_Accept (3)" )
注意,在CGI中鼓勵用小腳本,然而在FastCGI中則鼓勵使用組合式的腳本。你可以在從新構(gòu)想你的程序的全局結(jié)構(gòu),來獲得FastCGI的高性能。
例1: TinyFastCGI
這是一個用C語言寫的一個簡單FastCGI應答程序例子:
#include "fcgi_stdio.h"
#include
int count;
void initialize(void)
{
count=0;
}
void main(void)
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |