來源:互聯網網民 2008-06-01 01:10:22
評論現在這年頭,各種web開發技術各領風騷,PHP,ASP,jsp都是比較時髦的,于是人們似乎把CGI淡忘了,其實CGI最受诟病的是它的性能比較差,占用的系統資源比較高。許多程序員因此覺得CGI沒有前途。
實際上,CGI除了傳統的優點如:安全性高,接口標准簡單,易于用不同語言實現外,近些年來出現的如fastcgi和mod_perl等技術已經可以彌補它在速度、資源方面的缺點。
下面以fastcgi技術爲例簡單說明:
傳統CGI技術之所以速度慢,主要是因爲一般 CGI每一次啓動都要啓動一個進程,假如有1000人同時在一個聊天室裏聊天,那麽就會産生1000個進程。對于有後台數據庫的CGI,意味著每次請求都是一次數據庫連接、查詢、斷開的過程。這樣的問題即使用C語言也不能解決,而像perl這樣的解釋語言更增加了啓動解釋程序的負擔。
fastcgi的設計思想就是啓動一個cgi進程以後不退出,一般情況下只要進行一次的操作如數據庫連接、sql語句的預備都可以在啓動時完成,以後再有新的請球,就只要直接查詢,不需要解釋、連接數據庫、産生新進程,由此可以大大提高系統性能。
一個簡單的例子:
#!/bin/perl
Print 「Content-type : text/Html\n\n」;
Print 「I Love yuzi」;
這樣的程序,每一次都要啓動一個進程。
而使用了FCGI模塊以後:
use FCGI;
while(FCGI::accept() >=0 )
{
print "Content-type: text/html\n\n";
print "I Love yuzi」;
}
exit 0;
只有循環內部每次執行
而從cgi轉向fastcgi是很簡單的,只要把啓動部分放在while循環外面,其它部分在while循環裏完成。但是應當注重的是,一般情況我們寫perl CGI程序的時候不注重資源的回收,讓程序結束的時候自動回收,但在fastcgi環境下這就會産生問題,所以要養成use strict的習慣,用my $var定義變量。
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
現在這年頭,各種web開發技術各領風騷,PHP,ASP,jsp都是比較時髦的,于是人們似乎把CGI淡忘了,其實CGI最受诟病的是它的性能比較差,占用的系統資源比較高。許多程序員因此覺得CGI沒有前途。
實際上,CGI除了傳統的優點如:安全性高,接口標准簡單,易于用不同語言實現外,近些年來出現的如fastcgi和mod_perl等技術已經可以彌補它在速度、資源方面的缺點。
下面以fastcgi技術爲例簡單說明:
傳統CGI技術之所以速度慢,主要是因爲一般 CGI每一次啓動都要啓動一個進程,假如有1000人同時在一個聊天室裏聊天,那麽就會産生1000個進程。對于有後台數據庫的CGI,意味著每次請求都是一次數據庫連接、查詢、斷開的過程。這樣的問題即使用C語言也不能解決,而像perl這樣的解釋語言更增加了啓動解釋程序的負擔。
fastcgi的設計思想就是啓動一個cgi進程以後不退出,一般情況下只要進行一次的操作如數據庫連接、sql語句的預備都可以在啓動時完成,以後再有新的請球,就只要直接查詢,不需要解釋、連接數據庫、産生新進程,由此可以大大提高系統性能。
一個簡單的例子:
#!/bin/perl
Print 「Content-type : text/Html\n\n」;
Print 「I Love yuzi」;
這樣的程序,每一次都要啓動一個進程。
而使用了FCGI模塊以後:
use FCGI;
while(FCGI::accept() >=0 )
{
print "Content-type: text/html\n\n";
print "I Love yuzi」;
}
exit 0;
只有循環內部每次執行
而從cgi轉向fastcgi是很簡單的,只要把啓動部分放在while循環外面,其它部分在while循環裏完成。但是應當注重的是,一般情況我們寫perl CGI程序的時候不注重資源的回收,讓程序結束的時候自動回收,但在fastcgi環境下這就會産生問題,所以要養成use strict的習慣,用my $var定義變量。