當前位置:首頁 » 編程語言 » fastcgic語言

fastcgic語言

發布時間: 2023-06-01 01:19:23

㈠ 如何用c實現fastcgi文件上傳

如果Internet連接必須在應用過程中保持著,可創建一個類CWinApp的CInternetSession成員。一旦已建立起Internet 會話,就可調用OpenURL。CInternetSession會通過調用全局函數AfxParseURL來為分析映射URL。無論協議類型如何,CInternetSession 解釋URL並管理它。它可處理由URL資源「file://」標志的本地文件的請求。如果傳給它的名字是本地文件,OpenURL 將返回一個指向CStdioFile對象的指針。

㈡ nginx+FastCGI+C/C++的搭建http伺服器的問題

建議:
1、使用短連接,nginx+fastcgi不太適合長連接應用
2、如果使用長連接,請設置並調整nginx.conf中fastcgi相關的參數,比如buffer之類

㈢ 用C語言進行web後端編程有什麼不妥

如果你的目的只是開車,你是願意買輛車開哪,還是造輛車開呢??? 後者不是你想的那麼容易。。。C語言理論上什麼都能幹,但實際上又好像什麼也做不了。。。。用C語言做高級編程總會繞很大一圈,原因是缺乏現成的工具,很多時候你不得不自己去做,但前提是你會不會做。。。。
C語言肯定可行,但你有什麼眉目嗎???

㈣ 用C語言開發FastCGI應用程序


I/O函數包
FastCGI軟體開發套件,開源的WebServer 2.0伺服器包含I/O函數包用與簡化把已存在的CGI程序轉成FastCGI程序或者編寫FastCGI程序,在開發套件中有兩個函數包:fcgi_stdio 和 fcgiapp,在你的程序中必須包含這些包中的改畝一個:
fcgi_stdio.h fcgiapp.h fcgi_stdio包,是fcgiapp包的頂層包,在轉化CGI程序或者是寫新的FastCGI程序是,我們強烈推薦你用它,fcgi_stdio包有以下幾個優點或悄:
簡單:只要有三個性的API需要學。
易懂:如果你正包CGI程序轉化為FastCGI程序,你會發現CGI程序與FastCGI程序之間只有很少的區別。在我們設計函數庫的時候我們盡可能的 把FastCGI應用程序變得容易理解,以至於我們在建立新FastCGI程序的時候我們使用相同的環境變數,相同的解析查詢字元串的技術,以及相同的 I/O程序等。
方便:這個庫函數提供了CGI和FastCGI二進制的文件的完美兼容。因此不管是CGI還是FastCGI,都同樣運行。
代碼結構
FastCGI的代碼構成,把你的代碼分成兩個獨立部分:
1.初始化部分:只執行一次
2.應答循環部分:FastCGI腳本每被調用一次,這部分九被執行一次
一個應答循環的典型格式如下:
while (FCGI_Accept() = 0) {//循環條件
# 應答循環體
}
知道一個客戶端請求來的時候FCGI_Accept塊才執行,並返回0。如果有一個系統故障,或是系統管理員終止進程,Accept將返回-1。
如果應用程序作為一個CGI程序被調用,那麼第一次調用Accept時,返回0,第二次總是返回-1,產生CGI行為。(請詳見20頁的"FCGI_Accept (3)" )
注意,在CGI中鼓勵用小腳本,然而在FastCGI中則鼓勵使用組合式的腳本。你可以在從新構想你的程序的全局結構,來獲得FastCGI的高性能。
例1: TinyFastCGI
這是一個用C語言寫的一個簡單FastCGI應答程序例子:
#include "fcgi_stdio.h"
#include stdlib.h
int count;
void initialize(void)
{
count=0;
}
void main(void)
{
initialize();
while (FCGI_Accept() = 0) {
printf("Content-type: text/html "
" "
"titleFastCGI Hello! (C, fcgi_stdio library)/title"
"h1FastCGI Hello! (C, fcgi_stdio library)/h1"
"Request number %d running on host i%s/i ",
++count, getenv("SERVER_HOSTNAME"));
}
}
例2:原始數據產生器
思考一下,一個應答應用程序產生第N次原始數據。
一個CGI應用程序將沒有有效的方法來解決這個問題。例如,如果用戶訪問第50000次的原始數據,那麼CGI應用程序就不許從第一條原始數據開始計算,知道第50000條的,要是應用程序終止衫殲渣,伴隨著她辛苦積累的數據也會隨之消失。
如果一個客戶端想訪問第4900條原始數據,那麼伺服器必須重新開始積累。
由於我們能維持這個狀態,FastCGI應用程序對與這樣的問題就更有效。一個FastCGI應用程序在初始化階段能夠計算一個擴展的源數據的表,並保持表的不同范圍。當客戶端請求一個特別原始數據的時候,循環應答需要從表裡查詢。
這里有一個原始數據代碼事例:
#include "fcgi_stdio.h"
#include stdlib.h
#include string.h
#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 "
" ");
printf("titlePrime FastCGI/title "
"h1Prime FastCGI/h1 ");
query_string = getenv("QUERY_STRING");
if(query_string == NULL) {
printf("Usage: Specify a positive number in the query string. ");
} else {
query_string = strchr(query_string, `=') + 1;
n = strtol(query_string);
if(n
1) {
printf("The query string `%s' is not a positive number. ",
query_string);
} else if(n
MAX_NUMBER_OF_PRIME_NUMBERS) {
printf("The number %d is too large for this program. ", n);
} else{
printf("The %ldth prime number is %ld. ", n, prime_table[n]);
}
}
}
}
這個應用程序在初始化時有一個顯而意見的開銷,但是後來的訪問是快速的。

㈤ 如何配置lighttpd能夠執行C語言寫的fastcgi程序

寫CGI,是可以的

~
~
~

㈥ 關於什麼是什麼是CGI

什麼是CGI
CGI全稱是「公共網關介面」(Common Gateway Interface),HTTP伺服器與你的或其它機器上的程序進行「交談」的一種工具,其程序須運行在網路伺服器上。
CGI可以用任何一種語言編寫,只要這種語言具有標准輸入、輸出和環境變數。如php,perl,tcl等
什麼是FastCGI
FastCGI像是一個常駐(long-live)型的CGI,它可以一直執行著,只要激活後,不會每次都要花費時間去太陽城fork一次(這是CGI最為 人詬病的fork-and-execute 模式)。它還支持分布式的運算, 即 FastCGI 程序可以在網站伺服器以外的主機上執行並且接受來自其它網站伺服器來的請求。
FastCGI是語言無關的、可伸縮架構的CGI開放擴展,其主要行為是將CGI解釋器進程保持在內存中並因此獲得較高的性能。眾所周知,太陽城CGI解釋 器的反復載入是CGI性能低下的主要原因,如果CGI解斗腔釋器保持在內存中並接受FastCGI進程管理器調度,則可以提供良好的性能、伸縮性、Fail- Over特性等等。
FastCGI與CGI特點
1、如CGI,FastCGI也具有語言無關性.
2、如CGI, FastCGI在進程中的應用程序,獨立於核心web伺服器運行,提供了一個比API更安全的環境。(APIs把應用程序的代碼與核心的web伺服器鏈接 在一起,這意味著在一個錯誤的API的應用程序可能會損壞其他應用程序或核心伺服器; 惡意的太陽城API的應用程序代碼甚至可以竊取另一個應用程序或核心伺服器的密鑰。)
3、FastCGI技術目前支持語言有:C/C++、Java、Perl、Tcl、Python、SmallTalk、Ruby等。相關模塊在Apache, ISS, Lighttpd等流行的伺服器上也是可用的。
4、如CGI,FastCGI的不依賴於任何Web伺服器的內部架構,因此即使伺服器技術的變化, FastCGI依然穩定不變。
FastCGI的工作原理
1、Web Server啟動時載入FastCGI進程管理器(IIS ISAPI或Apache Mole)
2、FastCGI進程管理器自身初始化,啟動多個CGI解釋器進程(可見多個php-cgi)並等待來空高衫自Web Server的連接。
3、當客戶端請求到達Web Server時,FastCGI進程管理器選擇並連接到一個CGI解釋器。Web server將太陽城CGI環境變數和標准輸入發送到FastCGI子進程php-cgi。
4、FastCGI子進程完成處理後將標准輸出和錯誤信息從同一連接返回Web Server。當FastCGI子進程關閉連接時,請求便告處理完成。FastCGI子進程接著等待並處理來自FastCGI進程管理器(運行在Web Server中)的下一個連接。 在CGI模式中,php-cgi在此便退出了。
在上述情況中,你可以想像CGI通常有多慢。每一個Web請求PHP都必須重新解析php.ini、重新載入全部擴展並重初始化太陽城全部數據結構。使用 FastCGI,所有這些都只在進程啟動時發生一次。一個額外的好處是,持續資料庫連接(Persistent database connection)可以工作。
FastCGI的不足
因為是多進程,所以比CGI多線程消耗更多的伺服器內存,PHP-CGI解釋器每進程消耗7至25兆內存,將這個數字乘以50或100就是很大的內存念爛數。
Nginx 0.8.46+PHP 5.2.14(FastCGI)伺服器在3萬並發連接下,開啟的10個Nginx進程消耗150M內存(15M*10=150M),開啟的64個php- cgi進程消耗1280M內存(20M*64=1280M),http://tyangcdh.com加上系統自身消耗的內存,總共消耗不到2GB內存。如果伺服器內存較小,完全可以只開啟25 個php-cgi進程,這樣php-cgi消耗的總內存數才500M。

㈦ 護衛神PHP套件出現"FastCGI"等錯誤怎麼解決

把應用程序開發功能選擇上就可以了,PHP的CGI版本,CGI的功能是必須選擇的。模塊IsapiMole通知ExecuteRequestHandler處理程序PHP-Handler錯誤代碼0x800700
或 處理程序「AboMapperCustom-5095705」在其模塊列表中有一個錯誤模塊「IsapiMole」在IIS安裝ISAPI擴展即可。

熱點內容
小學生用的手機平時用什麼密碼 發布:2024-07-22 03:28:26 瀏覽:611
c語言編程軟體游戲 發布:2024-07-22 03:28:25 瀏覽:791
python職業規劃 發布:2024-07-22 03:28:23 瀏覽:600
小米5s怎麼鎖屏密碼忘了怎麼辦 發布:2024-07-22 03:09:19 瀏覽:72
紙片估演算法 發布:2024-07-22 02:46:32 瀏覽:286
茶杯頭安卓版如何 發布:2024-07-22 02:46:29 瀏覽:69
cl編譯器win7 發布:2024-07-22 02:46:27 瀏覽:694
連接雲伺服器如何注冊 發布:2024-07-22 02:45:48 瀏覽:219
我的世界賺金幣活躍度高伺服器 發布:2024-07-22 02:45:11 瀏覽:684
linux查看mysql資料庫與 發布:2024-07-22 02:35:06 瀏覽:425