最新要聞

廣告

5G

首例5g乳腺手術價格是多少錢?首例5g乳腺手術成功率是多少?

首例5g乳腺手術價格是多少錢?首例5g乳腺手術成功率是多少?

電信光纖多少錢一年?電信光纖價格表

電信光纖多少錢一年?電信光纖價格表

科技

cgi是什么專業術語?編程術語釋疑

來源:21CN

含義:

CGI(Common Gateway Interface) 是WWW技術中最重要的技術之一,有著不可替代的重要地位。CGI 是外部應用程序(CGI 程序)與 WEB 服務器之間的接口標準,是在 CGI 程序和 Web 服務器之間傳遞信息的過程。CGI 規范允許 Web 服務器執行外部程序,并將它們的輸出發送給 Web 瀏覽器,CGI 將 Web 的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。

CGI 是 Web 服務器運行時外部程序的規范,按 CGI 編寫的程序可以擴展服務器功能。CGI 應用程序能與瀏覽器進行交互,還可通過數據庫 API 與數據庫服務器等外部數據源進行通信,從數據庫服務器中獲取數據。格式化為 HTML 文檔后,發送給瀏覽器,也可以將從瀏覽器獲得的數據放到數據庫中。

幾乎所有服務器都支持 CGI,可用任何語言編寫 CGI,包括流行的 C、C ++、VB 和 Delphi 等。CGI 分為標準 CGI 和間接 CGI 兩種。標準 CGI 使用命令行參數或環境變量表示服務器的詳細請求,服務器與瀏覽器通信采用標準輸入輸出方式。間接 CGI 又稱緩沖 CGI,在 CGI 程序和 CGI 接口之間插入一個緩沖程序,緩沖程序與 CGI 接口間用標準輸入輸出進行通信。

編程語言:

CGI可以用任何一種語言編寫,只要這種語言具有標準輸入、輸出和環境變量。對初學者來說,最好選用易于歸檔和能有效表示大量數據結構的語言,例如UNIX環境中:

· Perl (Practical Extraction and Report Language)

· Bourne Shell或者Tcl (Tool Command Language)

· PHP(Hypertext Preprocessor))

由于C語言有較強的平臺無關性,所以也是編寫CGI程序的首選。

Windows環境中:

· C和C++

由于Internet上大部分服務器使用的是UNIX操作系統,且幾乎任一UNIX操作系統中都有Bourne Shell,因而大部分實現腳本都是用Bourne Shell編寫的。

最終Perl由于其跨操作系統、易于修改的特性成為了CGI的主流編寫語言,以至于一般的“cgi程序”就是Perl程序。

各種術語釋疑

說實話,對于一個沒接觸過編程語言的人來說,剛接觸cgi概念的時候肯定會有一堆疑問,這到底是什么鬼,處理動態內容的東西不是像php一樣的應用程序嗎,跟cgi有幾毛錢關系,fastcgi又是什么?我想,非科班出身的強迫癥患者(包括我)一定會被這些概念折騰的死去活來。

以php為例,我將一次動態請求相關的概念大致都簡單解釋一遍。

cgi:它是一種協議。通過cgi協議,web server可以將動態請求和相關參數發送給專門處理動態內容的應用程序。

fastcgi:也是一種協議,只不過是cgi的優化版。cgi的性能較爛,fastcgi則在其基礎上進行了改進。

php-cgi:fastcgi是一種協議,而php-cgi實現了這種協議。不過這種實現比較爛。它是單進程的,一個進程處理一個請求,處理結束后進程就銷毀。

php-fmp:是對php-cgi的改進版,它直接管理多個php-cgi進程/線程。也就是說,php-fpm是php-cgi的進程管理器因此它也算是fastcgi協議的實現。在一定程度上講,php-fpm與php的關系,和tomcat對java的關系是類似的。

cgi進程/線程:在php上,就是php-cgi進程/線程。專門用于接收web server的動態請求,調用并初始化zend虛擬機。

cgi腳本:被執行的php源代碼文件。

zend虛擬機:對php文件做詞法分析、語法分析、編譯成opcode,并執行。最后關閉zend虛擬機。

cgi進程/線程和zend虛擬機的關系:cgi進程調用并初始化zend虛擬機的各種環境。

關鍵詞: 交互式媒體 服務器程序 數據庫服務器 外部程序規范