{
initialize();
while (FCGI_Accept() >= 0) {
printf("Content-type: text/html\r\n"
"\r\n"
""
"
FastCGI Hello! (C, fcgi_stdio library)
"
"Request number %d running on host %s\n",
++count, getenv("SERVER_HOSTNAME"));
}
}
例2:原始數(shù)據(jù)產(chǎn)生器
思考一下,一個應(yīng)答應(yīng)用程序產(chǎn)生第N次原始數(shù)據(jù)。
一個CGI應(yīng)用程序?qū)]有有效的方法來解決這個問題。例如,如果用戶訪問第50000次的原始數(shù)據(jù),那么CGI應(yīng)用程序就不許從第一條原始數(shù)據(jù)開始計算,知道第50000條的,要是應(yīng)用程序終止,伴隨著她辛苦積累的數(shù)據(jù)也會隨之消失。
如果一個客戶端想訪問第4900條原始數(shù)據(jù),那么服務(wù)器必須重新開始積累。
由于我們能維持這個狀態(tài),F(xiàn)astCGI應(yīng)用程序?qū)εc這樣的問題就更有效。一個FastCGI應(yīng)用程序在初始化階段能夠計算一個擴(kuò)展的源數(shù)據(jù)的表,并保持表的不同范圍。當(dāng)客戶端請求一個特別原始數(shù)據(jù)的時候,循環(huán)應(yīng)答需要從表里查詢。
這里有一個原始數(shù)據(jù)代碼事例:
#include "fcgi_stdio.h"
#include
#include
#define POTENTIALLY_PRIME 0
#define COMPOSITE 1
#define VALS_IN_SIEVE_TABLE 1000000
#define MAX_NUMBER_OF_PRIME_NUMBERS 78600
long int sieve_table[VALS_IN_SIEVE_TABLE];
long int prime_table[MAX_NUMBER_OF_PRIME_NUMBERS];
void
initialize_prime_table(void)
{
long int prime_counter=1;
long int current_prime=2, c, d;
prime_table[prime_counter]=current_prime;
while (current_prime < VALS_IN_SIEVE_TABLE) {
for (c = current_prime; c <= VALS_IN_SIEVE_TABLE;
c += current_prime) {
sieve_table[c] = COMPOSITE;
}
for (d=current_prime+1; sieve_table[d] == COMPOSITE; d++);
prime_table[++prime_counter]=d;
current_prime=d;
}
}
void main(void)
{
char *query_string;
long int n;
initialize_prime_table();
while(FCGI_Accept() >= 0) {
printf("Content-type: text/html\r\n"
相關(guān)推薦:2011計算機(jī)等級考試二級C輔導(dǎo)實例編程匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |