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