娑堟伅缁忚繃缃戠粶浼犺緭锛屽埌杈句簡鏈嶅姟鍣ㄧ锛屾渶甯歌鐨勬湇鍔″櫒鏄疻eb鏈嶅姟鍣紝鍋歅HP鐨勫悓瀛﹂兘鐭ラ亾FastCGI妯″紡鐨凱HP姣旀櫘閫歅HP鏇撮珮鏁堬紝杩欑瘒灏辫亰鑱婂叾涓殑鍘熺悊銆?/p>
聽
鍙よ€佷絾甯歌鐨凜GI
Web鏈嶅姟鍣ㄨ兘瑙f瀽HTTP璇锋眰锛岃繑鍥為潤鎬佽祫婧愶紙HTML椤点€佸浘鐗囩瓑锛夛紝浣嗚杈撳嚭鍔ㄦ€佸唴瀹癸紝蹇呴』寰桺HP/C#/Ruby/Java/Python/C/C++杩欎簺澶栭儴绋嬪簭鏉ュ疄鐜般€?/p>
聽
鏃╂湡鏈変釜鎶€鏈彨CGI锛圕ommon Gateway Interface锛岄€氱敤缃戝叧鎺ュ彛锛夛紝鏄敤浜嶹eb鏈嶅姟鍣ㄥ拰澶栭儴绋嬪簭涔嬮棿浼犺緭鏁版嵁鐨勪竴绉嶆爣鍑嗐€備竴涓畝鍗曠殑CGI绋嬪簭锛圕++璇█锛夊涓嬶細
#include <stdio.h> #include <stdlib.h> int main() { printf("Content-type: text/htmlrnrn"); printf("your name is:%sn", getenv("QUERY_STRING")); return 0; }
聽娴忚鍣ㄨ闂繖涓狢GI绋嬪簭锛屽氨浼氭樉绀猴細your name is:name=xxx
聽
CGI瑙勫畾浜哤eb鏈嶅姟鍣ㄥ浣曞拰CGI绋嬪簭涔嬮棿浼犺緭鏁版嵁锛屽叿浣撹繃绋嬪ぇ浣撴槸杩欐牱锛?/p>
1銆乄eb鏈嶅姟鍣ㄦ敹鍒扮殑璇锋眰淇℃伅鍚庯紝鍚姩CGI绋嬪簭锛坅pache鏄痜ork杩涚▼exec CGI绋嬪簭锛夛紱
2銆乄eb鏈嶅姟鍣ㄩ€氳繃鐜鍙橀噺鍜?span style="color: #ff0000;">鏍囧噯杈撳叆鎶婅姹備俊鎭紶閫掔粰CGI绋嬪簭锛?/p>
3銆丆GI绋嬪簭鎵ц涓氬姟閫昏緫鍚庯紝閫氳繃鏍囧噯杈撳嚭鍜?span style="color: #ff0000;">鏍囧噯閿欒鎶婂搷搴旀暟鎹繑鍥炵粰Web鏈嶅姟鍣紝CGI绋嬪簭exit锛?/p>
4銆乄eb鏈嶅姟鍣ㄥ啀缁勭粐鎴怘TTP鍝嶅簲鍖呭彂缁欐祻瑙堝櫒銆?/p>
聽
鍦ㄤ笂闈㈢殑渚嬪瓙涓紝绗竴琛宲rintf鏄緭鍑篐TTP澶达紙杩樿寰桯TTP Header鍜孊ody鏄敤rnrn鍒嗗壊鐨勪箞锛燂級锛実etenv("QUERY_STRING")鏄粠鐜鍙橀噺鑾峰彇URL锛宲rintf鏄€氳繃鏍囧噯杈撳嚭杩斿洖鍐呭銆?/p>
聽
Web鏈嶅姟鍣ㄤ細鎶婂摢浜涗俊鎭€氳繃鐜鍙橀噺浼犻€掔粰CGI绋嬪簭锛熷父鐢ㄧ殑鏈夎繖浜涳細
- CONTENT_LENGTH 锛氬悜鏍囧噯杈撳叆鍙戦€佺殑鏁版嵁鐨勫瓧鑺傛暟(POST)
- QUERY_STRING锛氬疄闄呭瓨鏀惧彂閫佺粰CGI绋嬪簭鐨勬暟鎹?GET)
- REQUEST_METHOD锛氫紶閫佹暟鎹墍鐢ㄧ殑CGI鏂规硶(GET鎴朠OST)
- HTTP_COOKIE锛歝ookie鍊?/span>
- REMOTE_ADDR锛氱敤鎴稩P
- SCRIPT_NAME锛氳姹傜殑CGI
鍙互鐪嬪埌CGI鍙槸涓€绉嶆爣鍑嗭紝鍙互鐢ㄤ换浣曚竴绉嶈瑷€缂栧啓CGI绋嬪簭锛屽彧瑕佽繖绉嶈瑷€鍏锋湁鏍囧噯杈撳叆銆佹爣鍑嗚緭鍑哄拰鐜鍙橀噺锛屾瘮濡傦細C/C++锛宲erl锛孭HP銆乺uby銆傛寜鐓GI鏍囧噯瑕佹眰锛屽氨鑳藉拰Web鏈嶅姟鍣ㄤ氦浜掕捣鏉ャ€?/p>
聽
FastCGI搴旇繍鑰岀敓
CGI鏄€氳繃鐜鍙橀噺/鏍囧噯杈撳叆銆佹爣鍑嗚緭鍑?鏍囧噯閿欒鏉ヤ紶杈撴暟鎹紝杩愯鎬ц兘姣旇緝浣庯紝涓昏鏈変袱鐐癸細
1銆佹瘡涓姹傞兘闇€瑕乄eb鏈嶅姟鍣ㄥ幓fork鍑篊GI绋嬪簭锛岄绻乫ork杩涚▼姣旇緝鑰楁椂
2銆丆GI绋嬪簭姣忔閮芥槸浠庡ご杩愯锛岃閰嶇疆銆佽繛鎺ュ叾浠栨湇鍔¢兘寰楅噸鏂版潵锛屼篃姣旇緝鑰楁椂
聽
FastCGI鏄CGI鐨勬敼杩涳紝FastCGI妯″紡涓嬶紝Web鏈嶅姟鍣ㄥ拰FastCGI绋嬪簭浼犺緭鏁版嵁鐨勮繃绋嬪ぇ浣撴槸锛?/p>
1銆乄eb鏈嶅姟鍣ㄦ敹鍒扮殑璇锋眰淇℃伅鍚庯紝鎸塅astCGI鍗忚鎶婅姹備俊鎭€氳繃socket鍙戠粰FastCGI绋嬪簭锛?/p>
2銆丗astCGI绋嬪簭鎵ц涓氬姟閫昏緫鍚庯紝閫氳繃socket鎶婂搷搴旀暟鎹繑鍥炵粰Web鏈嶅姟鍣紝FastCGI绋嬪簭涓峞xit锛?/p>
3銆乄eb鏈嶅姟鍣ㄥ啀缁勭粐鎴怘TTP鍝嶅簲鍖呭彂缁欐祻瑙堝櫒銆?/p>
聽
瀵规瘮CGI鐨勯€氳繃锛屽彲浠ュ彂鐜颁富瑕佹槸灏戜簡姣忔fork鐨勮繃绋嬶紝骞朵笖鐢╯ocket鏉ヤ紶杈撴暟鎹紝杩欐槸FastCGI鎺ュ彛鏇撮珮鏁堢殑鍘熷洜銆?/p>
聽
FastCGI鏈夎繖浜涚壒鐐癸細
- FastCGI绋嬪簭甯搁┗鍐呭瓨锛屽惎鍔ㄥ悗鍙互鍙嶅澶勭悊璇锋眰
- FastCGI 灏辨槸杩涚▼姹?绾跨▼姹犳ā鍨嬬殑閫氱敤鍚屾鏈嶅姟鍣ㄦ鏋?/span>
FastCGI绋嬪簭澶勭悊璇锋眰鍚庝笉浼氶€€鍑猴紝鍙互鍙嶅澶勭悊璇锋眰锛岄偅涔堝湪鍚姩鍚庡氨鎶婇厤缃В鏋愩€佷笌鍏朵粬鍚庡彴鐨勮繛鎺ュ缓绔嬪ソ锛屼笉鐢ㄦ瘡娆¤姹傛椂鎼炰竴杈癸紝鑷劧鏇村揩浜嗐€?/p>
聽
鑷充簬杩欎釜FastCGI鍐呴儴濡備綍瀹炵幇杩涘煄姹?绾跨▼姹狅紝灏辨槸FastCGI杩涚▼绠$悊鍣紙FastCGI寮曟搸锛夌殑浜嬫儏浜嗐€侰/C++ FastCGI甯哥敤apache鐨刴od_fastcgi妯″潡锛孭HP甯哥敤spawn-fcgi鍜孭HP-FPM銆?/p>
聽