當前位置:編程學習大全網 - 編程語言 - 什麽是cgi,fastcgi,php-cgi,php-fpm,spawn-fcgi

什麽是cgi,fastcgi,php-cgi,php-fpm,spawn-fcgi

什麽是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, Lig/search?q=Spawn-FCGI),但可以在以前版本中找到它。在lig/download/lig/projects/spawn-fcgi,最新版本是/download/spawn-fcgi-1.6.3.tar.gz

註:最新的Spawn-FCGI可以到lig網站搜索“Spawn-FCGI”找到它的最新版本發布地址

下面我們就可以使用Spawn-FCGI來控制php-CGI的FastCGI進程了

1

/usr/local/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 5 -u www-data -g www-data -f /usr/bin/php-CGI

參數含義如下:

-f 指定調用FastCGI的進程的執行程序位置,根據系統上所裝的PHP的情況具體設置

-a 綁定到地址addr

-p 綁定到端口port

-s 綁定到unix socket的路徑path

-C 指定產生的FastCGI的進程數,默認為5(僅用於PHP)

-P 指定產生的進程的PID文件路徑

-u和-g FastCGI使用什麽身份(-u 用戶 -g 用戶組)運行,Ubuntu下可以使用www-data,其他的根據情況配置,如nobody、apache等

PHP-FPM與spawn-CGI對比測試

PHP-FPM的使用非常方便,配置都是在PHP-FPM.ini的文件內,而啟動、重啟都可以從php/sbin/PHP-FPM中進行。更方便的是修改php.ini後可以直接使用PHP-FPM reload進行加載,無需殺掉進程就可以完成php.ini的修改加載

結果顯示使用PHP-FPM可以使php有不小的性能提升。PHP-FPM控制的進程cpu回收的速度比較慢,內存分配的很均勻。

Spawn-FCGI控制的進程CPU下降的很快,而內存分配的比較不均勻。有很多進程似乎?分配到,而另外壹些卻占用很高。可能是由於進程任務分配的不均勻導致的.而這也導致了總體響應速度的下降。而PHP-FPM合理的分配,導致總體響應的提到以及任務的平均。

PHP-FPM與Spawn-FCGI功能比較

http://php-fpm.org/about/

PHP-FPM、Spawn-FCGI都是守護php-cgi的進程管理器。

  • 上一篇:卸載microsoftvisualc++會導致電腦變卡嗎
  • 下一篇:求機械加工大專畢業論文....著急用 因為不知道該怎麽寫 所以求助求大神幫忙...
  • copyright 2024編程學習大全網