導航:首頁 > 編程語言 > cgiphp

cgiphp

發布時間:2022-01-14 04:11:29

php和cgi是什麼關系

CGI是通用網關協議,是開發動態網頁的一個標准,遵循這個標准就可以用BAT、CMD、sh、PERL、C、C++、PERL以及PHP等語言編寫程序處理網頁請求和返回數據到客戶端瀏覽器。

② ASP、CGI、PHP是什麼

一、CGI:Common Gateway Interface
CGI代表Common Gateway Interface(通用網關界面),它使在網路伺服器下運行外部分應用程序(或網關)成為可能。CGI-BIN 目錄是存放CGI腳本的地方。這些腳本使WWW伺服器和瀏覽器能運行外部程序,而無需啟動另一個原因程序。

它是運行在Web伺服器上的一個程序,並由來自於瀏覽者的輸人觸發。CGI是在HTTP伺服器下運行外部程序(或網關)的一個介面,它能讓網路用戶訪問遠程系統上的使用類型程序,就好像他們在實際使用那些遠程計算機一樣。

CGI能夠讓瀏覽者與伺服器進行交互,如果你曾經遇到過在網路上填表或者進行搜索,就很有可能就是用的CGI。

盡管CGI易於使用,但是當大批人同時使用一個CGI應用程序是會反應較慢,網路伺服器 速度也會受到很大 影響。CGI應用程序的優點是可以獨立運行。

CGI應用程序可以由大多數的編程語言編寫,如Perl(Practical Extraction and Report Language)、C\C++、java 和Visual Basic等。不過對於那些沒有太多編程經驗的網頁製作人來說,實在是一個不小的難題。

CGI應用程序的工作原理是這樣的:

1.瀏覽器通過HTML表單或超鏈接請求指上一個CGI應用程序的URL。

2.伺服器收發到請求。

3.伺服器執行指定所CGI應用程序。

4.CGI應用程序執行所需要的操作,通常是基於瀏覽者輸人的內容。

5.CGI應用程序把結果格式化為網路伺服器和瀏覽器能夠理解的文檔(通常是HTML網頁)。

6.網路伺服器把結果返回到瀏覽器中。

有關CGI應用程序要注意的是:

CGI應用程序運行在瀏覽器可以請求的伺服器系統上,執行時需要使用伺服器CPU時間和內存。如果有成千上萬的這種程序會同時運行,那會對伺服器系統提出極高的要求。你要慎重考慮這個問題,以防止伺服器系統崩潰。

不完善的CGI應用程序可能成為別人非法進人伺服器系統的通道,有可能導致重要的資料被刪除或外泄。

CGI應用程序主要的用途有以下幾種:

根據瀏覽者填寫的HTML表單發送定製的答復。

創建可單擊的圖像縮小圖。

創建一個瀏覽者可以搜索內容的資料庫。

提供伺服器與資料庫的介面,並把結果轉換成HTML文檔。

製作動態HTML文擋。

如果一個CGI腳本可以在每台計算機上做同樣的事情;編寫腳本就會變的很容易。不幸的是,CGI腳本依賴於伺服器的操作系統,因此,對於非UNIX伺服器來說,Prl(UNIX下編寫腳本的一個常用工具)腳本毫無用處。所以,你必須定製安裝你的CGI腳本。

大多數伺服器都提供CGI-BIN目錄,但是這還不夠。因為你應該擁有自己的CGI-BIN。這樣,你就能運行自己的腳本(而不是讓自己的系統去適應已存在於系統上的腳本)。因此,你的提供商應安裝CGI-BIN,且能夠幫助你編寫腳本

二、ASP:Active Server Pages
ASP,活動伺服器頁面,就是一個編程環境,在其中,可以混合使用HTML、腳本語言以及組件來創建伺服器端功能強大的Internet應用程序。 如果你以前創建過一個站點,其中混合了HTML、腳本語言以及組件,你就可以在其中加入ASP程序代碼。通過在HTML頁面中加入腳本命令,你可以創建一個HTML用戶界面,並且,還可以通過使用組件包含一些商業邏輯規則。組件可以被腳本程序調用,也可以由其他的組件調用。
ASP的工作原理:
當在Web站點中融入ASP功能後,將發生以下事情:
1、用戶調出站點內容,默認頁面的擴展名是.asp。
2、瀏覽器從伺服器上請求ASP文件。
3、伺服器端腳本開始運行ASP。
4、ASP文件按照從上到下的順序開始處理,執行腳本命令,執行HTML頁面內容。
5、頁面信息發送到瀏覽器。
因為腳本是在伺服器端運行的,所以Web伺服器完成所有處理後,將標準的HTML頁面送往瀏覽器。這意味著,ASP只能在可以支持的伺服器上運行。讓腳本駐留在伺服器端的另外一個益處是:用戶不可能看到原始腳本程序的代碼,用戶看到的,僅僅是最終產生的HTML內容

三、PHP:Personal Home Page
PHP 是一種伺服器端的,嵌入HTML的腳本語言。PHP區別其他像客戶端Javascript的地方是它的代碼在伺服器端執行.PHP能做什麼?
最低水平,PHP可以做任何其他CGI程序所能做的事,例如收集表格數據,生成動態頁面內容,或者收發cookies.可能最強大,最有意義的特性是PHP支持大范圍的資料庫.書寫一個支持資料庫的Web 頁面是難以置信的簡單.
下面是當前支持的資料庫:
Adabas D InterBase Solid
dBase mSQL Sybase
Empress MySQL Velocis
FilePro Oracle Unix dbm
Informix PostgreSQL
PHP通過協議也支持與其他服務的"交談",像IMAP, SNMP, NNTP, POP3, 甚至是 HTTP. 你也可以打開晦澀的 網路介面和其他協議交互.
PHP的簡要歷史
1994年秋季, Rasmus Lerdorf 開始構思 PHP. 早期的非發行版本被用在他的主頁上,以追蹤誰在看他的在線簡歷. 1995年年初第一版本出台,當時PHP只被認為是個人主頁開發工具.它由一個非常單純的只能理解很少數特殊宏的分析引擎和 一些用在主頁後端通用的工具組成.如留言簿,計數器和其他一些東西.這個分析器在1995年年中被重寫並被命名為 PHP/FI 第二版. FI來自 Rasmus 寫的另外一個包, 用於解釋 html 形式的數據.他結合了個人主頁工具腳本和形式解析器,並加 上mSQL支持.這樣就產生 PHP/FI 了. PHP/FI以令人驚奇的步調成長,人們開始把自己的代碼貢獻給它.
很難給出它的硬統計表,但可以估計在1996年末,整個世界至少有15,000個網站在用PHP/FI.到1997年年中,這個 數字已經超過50,000了. 而在此時PHP的發展也發生了變化.由Rasmus自己偏愛的和幾個人開發的項目變成一個更有組織的團 體成就.Zeev Suraski和Andi Gutmans重寫了解析器.這個新的解析器成為PHP版本3的基礎.許多有用的代碼從PHP/FI 繼承到PHP3,並且很多是完全重寫的.
今天(1999年年中)不管是PHP/FI或PHP3與很多商業產品捆綁在一塊,例如C2級強度的Web伺服器和紅帽子linux. 根據NetCraft提供的數據推斷,保守估計全世界應用PHP的網站已超過150,000個.由此看來,它比在網際網路上運行Netscape 的旗艦企業伺服器的站點還多.

③ CGI與php之間的關系是什麼

mmon Gateway Interface
CGI代表Common Gateway Interface(通用網關界面),它使在網路伺服器下運行外部分應用程序(或網關)成為可能。CGI-BIN 目錄是存放CGI腳本的地方。這些腳本使WWW伺服器和瀏覽器能運行外部程序,而無需啟動另一個原因程序。

它是運行在Web伺服器上的一個程序,並由來自於瀏覽者的輸人觸發。CGI是在HTTP伺服器下運行外部程序(或網關)的一個介面,它能讓網路用戶訪問遠程系統上的使用類型程序,就好像他們在實際使用那些遠程計算機一樣。

CGI能夠讓瀏覽者與伺服器進行交互,如果你曾經遇到過在網路上填表或者進行搜索,就很有可能就是用的CGI。

盡管CGI易於使用,但是當大批人同時使用一個CGI應用程序是會反應較慢,網路伺服器 速度也會受到很大 影響。CGI應用程序的優點是可以獨立運行。

CGI應用程序可以由大多數的編程語言編寫,如Perl(Practical Extraction and Report Language)、C\C++、Java 和Visual Basic等。不過對於那些沒有太多編程經驗的網頁製作人來說,實在是一個不小的難題。

CGI應用程序的工作原理是這樣的:

1.瀏覽器通過HTML表單或超鏈接請求指上一個CGI應用程序的URL。

2.伺服器收發到請求。

3.伺服器執行指定所CGI應用程序。

4.CGI應用程序執行所需要的操作,通常是基於瀏覽者輸人的內容。

5.CGI應用程序把結果格式化為網路伺服器和瀏覽器能夠理解的文檔(通常是HTML網頁)。

6.網路伺服器把結果返回到瀏覽器中。

有關CGI應用程序要注意的是:

CGI應用程序運行在瀏覽器可以請求的伺服器系統上,執行時需要使用伺服器CPU時間和內存。如果有成千上萬的這種程序會同時運行,那會對伺服器系統提出極高的要求。你要慎重考慮這個問題,以防止伺服器系統崩潰。

不完善的CGI應用程序可能成為別人非法進人伺服器系統的通道,有可能導致重要的資料被刪除或外泄。

CGI應用程序主要的用途有以下幾種:

根據瀏覽者填寫的HTML表單發送定製的答復。

創建可單擊的圖像縮小圖。

創建一個瀏覽者可以搜索內容的資料庫。

提供伺服器與資料庫的介面,並把結果轉換成HTML文檔。

製作動態HTML文擋。

如果一個CGI腳本可以在每台計算機上做同樣的事情;編寫腳本就會變的很容易。不幸的是,CGI腳本依賴於伺服器的操作系統,因此,對於非UNIX伺服器來說,Prl(UNIX下編寫腳本的一個常用工具)腳本毫無用處。所以,你必須定製安裝你的CGI腳本。

大多數伺服器都提供CGI-BIN目錄,但是這還不夠。因為你應該擁有自己的CGI-BIN。這樣,你就能運行自己的腳本(而不是讓自己的系統去適應已存在於系統上的腳本)。因此,你的提供商應安裝CGI-BIN,且能夠幫助你編寫腳本

二、ASP:Active Server Pages
ASP,活動伺服器頁面,就是一個編程環境,在其中,可以混合使用HTML、腳本語言以及組件來創建伺服器端功能強大的Internet應用程序。 如果你以前創建過一個站點,其中混合了HTML、腳本語言以及組件,你就可以在其中加入ASP程序代碼。通過在HTML頁面中加入腳本命令,你可以創建一個HTML用戶界面,並且,還可以通過使用組件包含一些商業邏輯規則。組件可以被腳本程序調用,也可以由其他的組件調用。
ASP的工作原理:
當在Web站點中融入ASP功能後,將發生以下事情:
1、用戶調出站點內容,默認頁面的擴展名是.asp。
2、瀏覽器從伺服器上請求ASP文件。
3、伺服器端腳本開始運行ASP。
4、ASP文件按照從上到下的順序開始處理,執行腳本命令,執行HTML頁面內容。
5、頁面信息發送到瀏覽器。
因為腳本是在伺服器端運行的,所以Web伺服器完成所有處理後,將標準的HTML頁面送往瀏覽器。這意味著,ASP只能在可以支持的伺服器上運行。讓腳本駐留在伺服器端的另外一個益處是:用戶不可能看到原始腳本程序的代碼,用戶看到的,僅僅是最終產生的HTML內容

三、PHP:Personal Home Page
PHP 是一種伺服器端的,嵌入HTML的腳本語言。PHP區別其他像客戶端Javascript的地方是它的代碼在伺服器端執行.PHP能做什麼?
最低水平,PHP可以做任何其他CGI程序所能做的事,例如收集表格數據,生成動態頁面內容,或者收發cookies.可能最強大,最有意義的特性是PHP支持大范圍的資料庫.書寫一個支持資料庫的Web 頁面是難以置信的簡單.
下面是當前支持的資料庫:
Adabas D InterBase Solid
dBase mSQL Sybase
Empress MySQL Velocis
FilePro Oracle Unix dbm
Informix PostgreSQL
PHP通過協議也支持與其他服務的"交談",像IMAP, SNMP, NNTP, POP3, 甚至是 HTTP. 你也可以打開晦澀的 網路介面和其他協議交互.
PHP的簡要歷史
1994年秋季, Rasmus Lerdorf 開始構思 PHP. 早期的非發行版本被用在他的主頁上,以追蹤誰在看他的在線簡歷. 1995年年初第一版本出台,當時PHP只被認為是個人主頁開發工具.它由一個非常單純的只能理解很少數特殊宏的分析引擎和 一些用在主頁後端通用的工具組成.如留言簿,計數器和其他一些東西.這個分析器在1995年年中被重寫並被命名為 PHP/FI 第二版. FI來自 Rasmus 寫的另外一個包, 用於解釋 html 形式的數據.他結合了個人主頁工具腳本和形式解析器,並加 上mSQL支持.這樣就產生 PHP/FI 了. PHP/FI以令人驚奇的步調成長,人們開始把自己的代碼貢獻給它.
很難給出它的硬統計表,但可以估計在1996年末,整個世界至少有15,000個網站在用PHP/FI.到1997年年中,這個 數字已經超過50,000了. 而在此時PHP的發展也發生了變化.由Rasmus自己偏愛的和幾個人開發的項目變成一個更有組織的團 體成就.Zeev Suraski和Andi Gutmans重寫了解析器.這個新的解析器成為PHP版本3的基礎.許多有用的代碼從PHP/FI 繼承到PHP3,並且很多是完全重寫的.
今天(1999年年中)不管是PHP/FI或PHP3與很多商業產品捆綁在一塊,例如C2級強度的Web伺服器和紅帽子Linux. 根據NetCraft提供的數據推斷,保守估計全世界應用PHP的網站已超過150,000個.由此看來,它比在網際網路上運行Netscape 的旗艦企業伺服器的站點還多.

④ php和cgi之間的區別

cgi是一種介面,不管用什麼語言都可以按照這個介面進行實現。一般伺服器判斷需要調用cgi程序前,會把請求的GET參數放在環境變數QUERY_STRING里,POST請求內容則通過標准輸入流輸送到cgi程序內。cgi程序只需要將HTTP協議(包括HTTP頭和HTTP Body)列印到標准輸出流stdout,伺服器就會把它們直接傳輸給瀏覽器。

舉個栗子:

//c++實現cgi介面,列印querystring和postdata
#include<iostream>

usingnamespacestd;

intmain(){
cout<<"Content-type:text/html ";
constchar*queryString=getenv("QUERY_STRING");
if(queryString!=NULL){
cout<<"<h1>querystringis:"<<queryString<<"</h1>"<<endl;
}else{
cout<<"<p>Noquerystring</p>"<<endl;
}

stringpostData,tmpData;
while(cin>>tmpData){
postData+=tmpData;
}
if(postData!=""){
cout<<"<div>"<<postData<<"</div>"<<endl;
}else{
cout<<"<p>Nopostdata</p>"<<endl;
}

return0;
}

把它編譯好,命名為test.cgi,然後扔到伺服器到cgi目錄里。然後訪問類似於http://localhost/cgi/test.cgi?a=b&c=d的URL,伺服器就會把a=b&c=d放到QUERY_STRING環境變數中傳給test.cgi。最後能看到頁面上顯示出query string is a=b&c=d。也可以創建一個表單,把數據POST到http://localhost/cgi/test.cgi,然後可以看到頁面上顯示出所有的POST data。


php是一種腳本語言,它可以用來做很多事。。。比如說用來寫CGI程序:

#!/usr/envphp
<?php
echo"Content-type:text/html ";

$queryString=$_ENV("QUERY_STRING");
if($queryString!=NULL){
echo"<h1>querystringis:$queryString</h1>";
}else{
echo"<p>Noquerystring</p>";
}

$postData=file_get_contents("php://stdin");
if($postData!=""){
echo"<div>$postData</div>";
}else{
echo"<p>Nopostdata</p>";
}
?>

好吧它的功能跟上面C++寫的程序一毛一樣,我們把它加上「可執行屬性」chmod +x testphp.cgi然後扔到cgi目錄,然後訪問http://localhost/cgi/testphp.cgi?a=b&c=d,以及用表單post數據給它,看到的效果應該是一樣的。


所以你也看到了,伺服器調用CGI程序,它才不管你用啥實現的,反正介面都定好了,只要按介面來編程就行。


但一般伺服器調用PHP和調用CGI程序的邏輯不一樣。CGI程序需要自己解析QUERY_STRING和POST_DATA,PHP應該是通過另一套擴展跟伺服器交互的,所以一般用PHP直接寫網頁的時候,寫網頁的方式跟平時還真不太一樣,比如說,伺服器的php擴展已經幫我們把query string和post data解析成了數組,我們直接取值就好了:

<?php

if(isset($_GET)){
print_r($_GET);
}else{
echo"<p>Noquerystring</p>";
}

if(isset($_POST)){
print_r($_POST);
}else{
echo"<p>Nopostdata</p>";
}
?>

存成test.php之後訪問http://localhost/test.php?a=b&c=d,或者表單提交內容到頁面。可以看到輸出的數據都是結構化的,已經變成數組了。而且,HTTP頭也不需要我們自己輸出了(特殊情況除外)。

⑤ cgi是什麼php—cgi又是什麼這兩個有什麼關系

CGI是公共網關介面,是網站伺服器進程經過操作系統和互聯網客戶端進行通訊的一套規范標准。
PHP-CGI是PHP支持CGI標準的執行檔。

傳統CGI需要為每個訪問開一個操作系統進程,導致負荷很大。基本在伺服器部署上已經不採用CGI。現在主要應用Fast-CGI標准

⑥ 進程里phpcgi是做什麼用的佔用內存很高怎麼解決

修改mysql的臨時文件夾c:/windows/temp位置,並限制php-cgi進程數量看看

打開,在這個文件的最後幾行默認是下面的配置:
------------------------------------------------------------------------------
[PHP]
ExePath=C:\Program Files\wimp\php\php-cgi.exe
InstanceMaxRequests=10000
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000
RequestTimeout=50000
ActivityTimeout=90000

------------------------------------------------------------------------------
修改如下:
------------------------------------------------------------------------------
[PHP]
ExePath=C:\Program Files\wimp\php\php-cgi.exe
InstanceMaxRequests=200
EnvironmentVars=PHP_FCGI_MAX_REQUESTS:1000
RequestTimeout=30
ActivityTimeout=30

⑦ 安裝php的時候沒有php-cgi

什麼問題啊 用nginx只要
./configure --prefix=/usr/local/php (5.3以下版本加上這個--enable-fastcgi) --enable-fpm

⑧ php-cgi是哪裡來的,怎麼我的linux沒有,我已經安裝了php了

linux中一般通過php-fpm管理php進程,有php-fpm來接受請求並處理
php-fpm在裝完php就自帶了
可以在php-fpm.conf中配置相關參數,如監聽埠、線程數等

⑨ 什麼是PHP的CGI模式

你說的fastcgi模式的PHP吧,這個是目前主流的PHP模式,有點是速度更快,更獨立。
以前的isapi模式是集合到了iis裡面,一旦程序池崩潰,或是PHP崩潰,都會相互影響。
但是fastcgi有個缺點,進程可能會很多。

⑩ asp jsp cgi php之間的區別

就我個人的意見,PHP只適合做小型的網站開發,大型的站點就很困難了(能做,但是很痛苦!)
擴充性:
1、PHP用光了自己的一堆函數以後,要擴充似乎是很困難的。據我一位玩PHP和c比較好的朋友說,「可以擴充,要用c來寫,然後編譯進PHP裡面去」。請問,用PHP的朋友中有多少能達到這個水平的?
2、ASP。如果你認為asp只是那幾個response/request等對象,那你錯了。
個人認為,ASP只是一種技術,如果沒有MS的com/com+,asp就什麼都沒有了。說得過份一點,asp本身連一個賦值語句,連一個if都沒有!
正是基於此,ASP擁有很強的擴充性。你不熟悉vbs,你可以用jscript,你可以用perlscript,你可以通過安裝xscript來使用你熟悉的腳本語言。你會vb/delphi/vc/bcb..嗎?那你可以寫自己的組件,然後用asp來使用它。
3、java
同asp一樣,java通過不斷增多的(公司發布的或是自己編譯的)class來擴展自已。而且jsp與asp相比有一個大的優點:jsp是基於java的,擁有強大的程序語法和天然的平台無關性。
執行效率:
1、PHP是基於解釋型的。
「因為不用編譯而且高階,所以這類語言的程序效率通常很差,又因為原始程序代碼暴露在外,所以拿它來寫寫工具程序自己用可以,但是拿來開發軟體產品比較不恰當(除非你不在乎原始碼外流)。」(此段引用蔡學墉文章「你該學什麼程序語言?」)。
雖然PHP可以通過使用第三方的zend(我對PHP不是太熟悉)來彌補這個缺陷,但是似乎Zend是收費的,而且使用第三方的東西已經不是PHP本身的討論了。
2、ASP
asp發展較早,因此早期的asp1.0、asp2.0、asp3.0都是基於解釋的,有同PHP相同的問題。不過自MS的.net以後,asp.net在第一次載入時進行編譯,並載入於內存中,因此第一次以後的執行效率已經是相當快速了。
3、JSP。
java本身就是屬於編譯的語言,目前的jsp伺服器產品大多是做JIT編譯的,JSP在第一次載入時被編譯,因而與PHP相比在執行效率上有明顯的提高。

閱讀全文

與cgiphp相關的資料

熱點內容
php發送簡訊驗證碼 瀏覽:503
前端伺服器如何接收http請求 瀏覽:794
程序員資質查詢 瀏覽:355
程序員被別人開除怎麼辦 瀏覽:884
解壓視頻看一下 瀏覽:127
android仿知乎日報 瀏覽:333
為什麼前端比安卓手機需求大 瀏覽:853
命令行執行關機命令 瀏覽:50
在學校心情不好怎麼解壓 瀏覽:114
我的世界基岩版伺服器怎麼讀取 瀏覽:161
快件命令 瀏覽:853
阿里雲06折伺服器能用嗎 瀏覽:421
h5個人中心源碼 瀏覽:221
下三角矩陣的壓縮存儲 瀏覽:922
招人用什麼app好用 瀏覽:722
飛行控制源碼 瀏覽:185
androidhdmi開發 瀏覽:689
向程序員致敬作文 瀏覽:157
linuxphpconfig 瀏覽:348
php轉化為整數 瀏覽:767